Where things went off the rails was the things Microsoft refused to implement due to their monopoly position. They had a binary component architecture, but it wasn't sufficient to run Java. They had Java, but it was a vestigial and crippled version. Their HTML/CSS engine was just "odd", incompatible not only with emerging standards but with any published standard at all.
Basically "the problem" with IE wasn't that Microsoft "did whatever it wants", it was that it did (or didn't do) very specific things intended to prevent users from wanting to use IE at all, in a vain attempt to favor desktop applications or IE-specific implementations.