Linux is not without similar problems with different packages wanting to use the same file, but wanting different versions. In some cases, there are version conflicts where no single version can satisfy all packages. I've run into this a few times with applications written in Perl where they depend on bugs, or fixes to bugs, in various Perl modules.

Programmers these days like to make use of so much already existing code and many programmer toolkits. That means lots of library dependencies. And they almost always do not make any provision in their application for keeping those modules or libraries in private (for the application) areas when their application depends on specific versions.

It's not the OS per se. It's just bad programming (or abusive programming in some cases). But the world of Windows applications certainly has a lot more bad/abusive programmers around.