Of course apt-get is very convenient but I can't see a Microsoft version of it letting companies deliver multiple daily updates.
Based on my experience of the time the reasons were, in random order
- HTML GUIs were less functional but easier to code and good enough for most problems
- we could deploy many times per day for all our customers
- we could use Java on the backend and people didn't have to install the JVM on their PCs
- it worked on Windows and Macs, palmtops (does anybody remember them?) and anything else
- it was very easy to make it access our internal database
- a single component inside the firewall generates the GUI and accesses the db instead of a frontend and a backend, which by the way is the modern approach (but it costs more and we didn't have the extra functionality back then, js was little more than cosmetic)
Bloated, inefficient software is certainly present on the native side too, but it's also possible to write single-binary "portable" ones that don't require any installation --- just download and run.
(Hi, I'm a windows dev)
Windows 95 never had a proper, operating-system supported package manager, and I think that's a big part of why web applications took off in the late 90s/early 2000s. There simply wasn't any guarantee that once you installed a native app, you could ever fully remove it. Not to mention all the baggage with DLL hell, and the propensity of software to write random junk all over the filesytem.
Mobile has forced a big reset of this, largely driven by the need to run on a battery. You can't get away with as much inefficiency when the device isn't plugged into the wall.