It is quite common for an application to include a CSS that overrides Tapestry defaults. Further, it is likely that certain components may want to have their own CSS to override defaults ... but an application CSS may also want to override those CSS rules as well.
In an Ajax scenario, the component's CSS will be dynamically added to the page ... AFTER all existing CSS, including the theoretical application CSS that should be overriding the component CSS (theoretical in this discussion, actual in at least one of my clients).
I think a first approach to resolving this would be to extend Tapestry so that a particular CSS link can be marked as the "insertion point". CSS added via Ajax would be inserted BEFORE the insertion point (if present) rather than at the end of the <head> element (as is done today).