To add to the Clojurescript point: dead code removal. CLJS uses Google Closure and can take part in it's advanced compilation and dead code removal feature. All of the cruft that isn't used, that is abstracted away in CLJS anyway, can be removed when building your code for production.
https://developers.google.com/closure/compiler/docs/api-tuto...
Not an excuse for baroque frameworks though.