We have a Managed Package that works with the Community product and so has a site template. The components and controllers for the template are going to be marked Global to allow clients to create their own site template (for the purpose of modifying images and styles referenced in the site header/footer).
The idea is, there is a static resource that provides the standard theme content the product comes with (CSS, JS, Images) and if clients want to modify it they will have access to an copy of the resource which they can work with their own developer to modify. Once the client copy of a resource is appropriately modified, clients then clone the Site template we provided and include their own variable naming the appropriate static resource.
Obviously it would be nice to provide ways for clients to more declaratively brand the product but it seems like a questionable investment in development resources at this time. Also, providing declarative ways to do this would seem to require a number of custom settings and storage/naming conventions - which at some point would be more convoluted than simply modifying your own resource (IMO).
Alternatively, I've considered making the Static Resource more flexible by turning all of it's components into VF pages. On the PRO side, it would make changing style at least minimally more natively editable (via the page editor), AND you can then use dynamic linking between VF pages to provide dynamic linking between theme components. CON - this all seems more like a 'cool trick' than a sound approach (of course tricks are fun :)