That'd be entirely possible yes (might require duplicating large portions of CodeServer if you want to do it "externally", but could be baked into GWT proper yes).
Webpack actually comes with both a "watch mode" and a devserver (which, in the case of Webpack, actually wraps the "watch mode", it does not compile on-demand like GWT's SDM); each has its use IMO, they're not mutually exclusive.
The devserver has the advantage that you can proxy to a live server on another machine without even touching that machine, or you can serve static files from a local directory without writing to that directory and messing with either an existing production compile, your SCM, or your build (e.g. a *.nocache.js from src/main/webapp overwriting the production compilation in target/, or your build skipping GWT compilation because it thinks it's up-to-date and you end up packaging and deploying a stub nocache.js). Webpack's devserver can also inject a "live reload" script (which the GWT devserver could possibly do too, if it also watched the input files) so the webpage is automatically refreshed whenever a change is detected.
The "watch mode" is great if you're OK with writing directly to the webapp, or you can configure the webapp to load the GWT module from another directory (this is what I do currently in my gwt-maven-archetypes).
With the devserver, you can actually debug with a production server and quickly test changes to the code; like we used to be able to with the legacy DevMode in -noserver mode (even though we were deploying some code that allowed the "devmode" to be triggered, which is why you had to whitelist your server in the browser plugin settings when doing so), and we can do with the SDM bookmarklets when you're able to use them (i.e. you only have permutations around the user.agent and locale properties).
BTW, the devserver approach also works around the HTTPS limitations of SDM, as it proxies everything through HTTP (and on localhost so you can safely use APIs that require a "secure context"). That said, HTTPS could be added to CodeServer (and the devserver, for use by other devices/VMs not on localhost) relatively easily.
Actually, GWT already watches files to update its internal PathPrefixSet and avoid a full re-scan of the classpath. I wonder what the cost would be to do the same thing in another class (hopefully the JVM or the OS would share resources when watching the same folder or file twice), or if it could be possible to reuse the ResourceAccumulatorManager (but there's currently no callback to trigger anything on change).
The thing is, a GWT compilation still is rather costly even with all optimisations disabled, so I'm not sure triggering a compile on file change is a good thing.
As said above, technically, yes, we could. This is not mutually exclusive with a devserver though, and/but might prove too costly at runtime compared to the current "compile on-demand" approach.