It's good because in .Net 3.5 and earlier, it is difficult to do asynch programming. .Net 4 made it a bit easier. The Asynch stuff coming in 5 is light years ahead of what we have now. I don't think I'd call it difficult prior to .NET 4.0, but you're right, better techniques are coming.
I think it's fair to say that going back several versions, you could implement asynch techniques locally in certain areas of an application (synchronization objects in ADO 2, anonymous delegates in WCF and other areas, etc). But 2 years from now, someone will compare to what was done in prior versions and wonder how they ever got along....