gwt-exporter allows you to export entire classes, certain methods on it, static functions and interfaces, even not modifying the original classes, so you can export an entire library just using auxiliary classes and annotations. Take a look to the documentation of ExportOverlay:
https://code.google.com/p/gwt-exporter/wiki/GettingStarted#ExportOverlay
We are not adding new features to gwt-exporter, because the future will be JsInterop which uses the compiler to do the magic instead of generators, but there are a lot of features in gwt-exporter which could not be eventually in jsinterop.
If you need to export something for production right now I'll go with gwt-exporter until jsinterop is ready since their API is still in discussion, it is experimental and some things could fail.
If gwt-export documentation is not good enough, you can take a look to some projects using it, in the way you want, I mean not modifying original classes.
JsQuery: exports gwtquery and produces a clone of jQuery
JsUpload: exports gwtupload
Finally, and answering the question in the subject, GWT does not export everything in order to optimize the JS generated, think that marking anything as exportable using either jsInterop or gwt-exporter, implies that all this code is candidate to be used from JS, so the compiler does not remove it if eventually is not used in your java app.
- Manolo