The web wasn't originally intended to be used to provide native like experiences and so the foundations for that just weren't there. So yes, people had to re-invent and re-discover all those desktop frameworks but this time in a javascript & html environment.
I think the obsession over desktop like frameworks in Javascript is due to the fact that there just isn't a clear winner yet and that is because the foundations required to support a clear winner just don't exist yet.
-We need the ability to scope CSS to a given section of the document. I want to be able to import someone's widget (or set of widgets) and not worry about style collisions.
-We need a better solution for storing templates (pre-compiling them into .js files or storing them in <script type="text/template"> just seems awkward)
-We need a better way to bundle CSS with its resources. I.e., if I have a css file in "components/bootstrap/styles" that refers to "../img/pic.png" it is going to break when I concatenate all my CSS files into one and drop them in "/"
-We need a better module system. Yes, requirejs is good but I'd like to say I depend on "package.name.x" and not care where it comes from or who provides it. It should just get loaded for me (this has been solved for years in the Java world via OSGi).
-We need a better build system. Yes, grunt is good but I have to put in all sorts of logic to handle the above problems.
-I should be able to place custom tags in HTML and have the browser create my user-defined component for me. I.e., <usr:combo> should find the correct template and backing javascript and construct the component.
There won't be a winner and the re-invention will continue until these foundations are put in place.