Actually, Microsoft is very good at writing highly efficient tools and operating systems. The difference is they have to deal with hardware and software products from thousands of vendors. Making allowances for all those products leads to bloated code.
In contrast, Apple Computer controls their hardware design. Although they don't have huge staffing like Microsoft, the smaller amount of hardware models allows Apple to make incremental changes to their UNIX-based OS.
It is definitely more about the software vendors than the hardware vendors. Microsoft has a tendency to make the OEMs adjust to Microsoft's changes (see how Vista broke hibernation on a selection of laptop models until the OEM updated their drivers, for example).
However, Microsoft tends to bend over backwards on APIs and other developer-oriented decisions that makes for bloated code (back compat is a PITA to begin with). Apple on the other hand, is perfectly willing to give developers the finger and break them if it is 'better design' to deprecate or eliminate an API, and will let the dev twist in the wind, even Adobe.