The primary reason was the desire to have .Net framework support downlevel platforms and not just Longhorn - at least with some level of functionality. We obviously can't provide full cancellation if the underlying OS doesn't support it. But we could have some limited form that would offer reduced functionality or at least not require developers to be platform-aware. Alas, there was no time to really design it in, given the Whidbey and Longhorn release schedules.
And in case you are wondering, it's not possible to back-port OS-level I/O cancellation to XP / WS03 without potentially breaking existing applications, which is a no-no.