I like this approach a lot. My use case isn't quite as always-online as yours but I've considered having a bootstrap app that explicitly loads and caches the rest. The reason I haven't done it this way is that I still need to solve the more general update case of updating node-webkit and some custom OS-specific binaries that I've built.
I've settled on a simple semi-automatic updater. I publish the app's package.json manifest to a specific URL and the application periodically checks that against the current manifest. When an update is available the app prompts the user and then downloads and invokes an installer on Windows. On the Mac the "installer" is a DMG file and we just open that on behalf of the user and let them drag it to an Applications link
It's not perfect but it's working well enough for now.
Michael