The site and user modules are currently loaded with <script> tags that are injected into the HTML from the PHP side. This is apparently done because they need to be loaded with only=scripts (so they're not wrapped in a closure) and need to be loaded last, after anything else. These things are a bit tricky but not impossible to support in the client-side loader, and loading them from the client side will allow us to timestamp the site module (which currently isn't timestamped because anons get it as well), improving caching efficiency by caching it for 30 days instead of 5 minutes. The user module is already timestamped by PHP, which is OK because logged-in users bypass Squid.
We can't combine the site module with any regular modules due to these requirements. We also can't combine the site and user modules in one request because that would cause insane cache fragmentation.