You might also want to consider having the same application with all the features and then simply feature flipping ( http://grails.org/plugin/feature-flipper ) based on each client. It makes it more maintainable and testable.
I'm looking at having each variation of the core app deployed independently for which I (currently) feel that what Goran suggested sounds like a good fit.
Didn't know about the feature-flipper plugin, only noticed the feature-switch one before. Will have a closer look! Also really like the idea of having static content served via S3/CDN and not have it part of the deployed app, will have to look into that.
I was initially thinking about having a set of well known CSS and image files available and simply have each "concrete" app specify or override those as needed from the myapp-platform plugin.
@Goran, I'm curious what you do w.r.t. this and how your theme-plugin is used.