There are many reasons. Notably, binaries don't tend to compile the OS into themselves. There's always some kind of interface boundary where something depends on OS-defined behavior, like windows and menu bars and printing and finding the user's personal folder and so on and so forth. Microsoft decided to do all of the work to preserve old interfaces long after making newer ones, but it does come at a heavy maintenance and management cost which only makes sense in a market with extremely lucrative legacy forces.