The web won because it has the least barriers to entry for a new developer and solves a lot of difficult problems that the old-school application stack had. This is all from my history and point of view so I'm sure a lot of people will disagree.

Cost:

The days when big companies developed tooling and platforms cfor developers where great IF you worked at a company that could afford to pay for them. They were expensive. When I first started these suites were tens of thousands of dollars expensive, and later just thousands of dollars. Sure they did a lot of stuff, but man there was also A LOT of overhead in managing the suite. For young people and very small companies these things were unaffordable, and frankly unmaintainable. A lot of times you would here about companies who paid 10-20K for a suite only to not use it due to the training required for everyone, the installation cost, and the need to change your development process to fit the platform's model. So anyone starting out as a developer or starting up as company would find the cheapest/easiest options available. And since there are far more small development teams than big companies there was far more demand and community support for free/cheap systems that while not great could get the job done. Linux was free, mysql was free,Php was free, Perl was free, Javascript was free, and there were communities that would support a new developer through getting these up and running (no 2500 training class required). The reason the LAMP stack became so popular was because it was free, could be installed on cheap hardware, and every element had a community that would support it.

Cross Platform Support and Application Distribution:

With C++/C you had to compile for every target machine. What a nightmare, library flags, macros, ugh. Testing had to have special labs so they could find bugs that would popup in one OS, but not another. Then it had to be cloned on disks and shipped out.
Java came around with write once run everywhere which was better (MS came out with CLI and .net). The problem with these was making sure your customers had the base platform installed (the JRE or .net). B2B companies was a little easier because they had standardized equipment and IT departments that knew what to do, but if you were targeting B2C or small business then getting them to install the base software (again JRE/.NEt) was a pain because they would more than likely mess it up or just not know what to do so it required manual intervention. As soon as this got easier you wound up with the conflict of people having TOO much installed on their computer and just not wanting to install anything else unless they HAD to.
Fast forward to now and we've got a built in client that adhere's to common standards. If they want to use your app they bookmark it, and when they are sick of it they just delete the book mark. Sure there's cross browser issues, but they are far easier to deal with than both having the customer install some platform and dealing with cross OS issues (plus you dealing with them doesn't require the customer to do anything but hit the refresh button).

Developer Inequality:

I don't know how you can say there's a higher barrier to entry now than previous. In the 90's almost everyone you met who was a developer was a CS/EE major or started on computers at the age of 12. The arcane level of knowledge required for using platform to build an application in the 90's dwarfs what's required now. I still remember struggling with bugs where you'd go hunting for "the guy" who new everything, and then you'd spend a couple of days trying to figure where the issue was only to find some undocumented outcome to a flag passed to a lib. To the developer who was working for XXXX who wrote the library it this was a completely obvious and logical result.
Compare that to now. StackExchange. Free Video tutorials, Websites dedicated to teaching you. I constantly meet graphic designers, marketers, accountants, etc. who decided to become developers. I know who guy who has built a decent business with no official development education at all. He learned rails and shoved up to heroku. He learned javascript to improve the client side, and now he makes a decent living.

You can start from NOTHING and in a few weeks have a base product built and being used by an alpha customer. That never would have happened 20 years ago. I feel freer and more productive now as a developer than anytime in my career.