Actually you can blame Debian and Ubuntu for that particular pearl. Red Hat's distros have always used /lib and /lib64, Debian instead used "biarch" (/lib32 and /lib) for a while, then decided that wasn't good enough, and went for "multiarch", ie. /usr/lib/i386-linux-gnu and co. Of course than only solved the problem for *lib*, not for *include*, meaning you can't parallel-install development packages for 32 and 64 bit, and you need an independent chroot.
Originally Posted by not.sure
Oh and with per-application patching, Windows itself is not very different - it has a bunch of checks for which application is running and alters how things work, so it remains compatible with older apps...