Gehan, this is really awesome stuff. Took me a while to get to it, but I love what I see :)
You've touched most of the major benefits: separation of concerns, architectural structure, decoupling, testing. Two terms that we use a lot are "Application Composition" and "Composition Plan". These may help you frame (or expand on) many of the benefits.
Application Composition is the act of composing components into part of, or an entire application. This presupposes highly decoupled components. Application composition is typically a *very different* activity than implementing the business logic inside components. Traditionally, in the JavaScript world, these two activities and the code associated with them are smashed together: components become hopeless entangled with one another and with the connection mechanisms themselves.
A Composition Plan is a specific place or specific places in your codebase where you do application composition. It's like you said: a "system diagram", only in code! It's totally possible to do this without something like wire, but wire helps to give you these specific places (wire specs) and a compositional dsl (the object literal wire spec syntax) with constructs, like connect and the various other aop advices, that are tailored to doing composition (rather than implementing business logic algorithms, loops, etc.)
It's great to hear that you "forget you're in a browser". We really push hard for separation of DOM and component logic (by injecting dom nodes, or using wire/on, connect, aop etc.), and to hear that it's working for you in practice is great. Recently, I've been asked to review an application at my day job, and it's an intertwined mess of logic and direct dom manipulation. Trying to modify the code is almost impossible because the whole app just breaks when I change anything. It's impossible to tell where dependencies between JavaScript and the DOM--there's simply nowhere you can look and get a sense for how it all fits together. The only way is to change something, watch the application break, and then manually trace that to figure out how your change caused it.
Another big benefit is team scalability, both horizontal and vertical. Because the DOM and business logic are well separated, HTML/CSS specialists are often more free to make changes without breaking the JS, and vice versa. So adding team specializations becomes easier. Also, because the JS is decoupled and testable, it's also easier to add more JS engineers as the project needs. They won't be stomping on each others globals or getting into intertwined-global-dependency hell with each other, and everyone's code can be tested.
Speaking of testing, being able to assemble coarser grained components (think complex view components with HTML, CSS, and JS aspects), or even entire sections of an application, can make it easier to test those pieces without having to run the entire application. One huge problem we see a lot is that designers have to run the entire app, and dig 3, 4, 5, or 10 screens deep to see their latest designs and test user interactions. If screen 3 is busted, the designer trying to test screen 4 is simply out of luck. He/she has to go tell the engineering team that it's busted and someone has to go fix it in order to unblock the designer. Selenium can help here, but still, if screen 3 is busted, selenium also can't test screen 4. If smaller sections of the app can be tested, this problem can be mitigated or at least reduced.
Hope that helps! Keep up the great work on these tutorials!