Every time Apple upgrades their Mac OS a frantic application re-write is often required from third-party developers just to get things working on the new platform. In contrast, I can pull out an application written 15 years ago for DOS and fire it up under Windows without a problem. Microsoft realizes how important it is to keep third-party software working on their platform and bends over backwards to provide that backward compatibility.
For our own software, we've not had to tinker with the base code (written on Win 98) at all under Windows.
Building desktop apps for Mac is a (lucrative) pain.
It's true Microsoft goes to extraordinary lengths to keep backwards compatibility. Consider the Joel Spolsky anecdote about SimCity: http://www.joelonsoftware.com/articles/APIWar.html
In case you missed that, SimCity had a bug where it used memory it already freed. This worked under DOS for whatever reason, but not under Windows. So the Windows team hardcoded a special case just for SimCity.
That is going too far, IMO. Why should my OS have all this extra bloat to check for buggy applications? This is why OS vendors seed preview releases to developers, so they can test their own damn software and issue fixes for these kinds of bugs. While it may have been hard to distribute updates 20 years ago, with the internet it's trivial.
It sounds like there was a some kind of bug in DOS that allowed SimCity to work with object freed from memory and Windows team tried to hide it in Windows by making a special case :)
In any case I think it's called going an extra mile for the customer, isn't it? (I can't believe I'm writing it about MS)
It might work sometimes, but I'm pretty sure most platforms consider that behavior undefined.
Also, Apple never just pulls the plug on an API - at worst, if you use an API, and then Apple decides to remove the API, the next version of the OS simply lists the API as deprecated, and you get a warning when you compile. It is only in the following version of the OS that the API may actually be pulled. I don't think it's unreasonable to expect developers to update their apps every 2-3 years if they want them to keep working.