However, with Ext 4.20 RC, you have two generated files - the generated CSS and the generated Javascript. And the build tool puts the calls in the same place of the page. This means you need to load the javascript in the <head>.

No, this is not possible besides doing it manually after the build. With all the apps I've made I don't see any performance differences as the browser can download 4 files at once. So if you have the app CSS, Ext JS core JS file and app JS file that means it should be able to download the 3 files at once with no issues.

Well, in our case we've got a couple of extra files that we download, and the all-classes.js file is big enough that it has a noticeable delay (2-4 seconds, when served from an AWS server). So putting it at the end of the page and having a 'loading' animation is worth it for us, especially as we have more delays once we get the javascript files (we do AJAX calls on load to bring down dynamic configuration data before launching the UI).

If anyone else has this issue, here's the Ant tasks I added to the build.xml to move the CSS up to the top of the page: