Closure compiler te hace las dos cosas:
por un lado, te hace analisis estático del código fuente, y dependiendo del --compilation_level te hace sin mas compactado de todos los ficheros, o ofuscacion total. El tema de obfuscacion tiene su aquel, porque vas a perder la compatibilidad de tu codigo con bibliotecas de terceros. No te sorprendas si la primera vez que pasas el closure indicandole --warning_level VERBOSE te de 200 warnings y bastantes errores en 500 lineas de js ;).
lo increiblemente bueno de closure, es que ademas del compilado, si anotas apropiadamente los comentarios de las fucniones, incluso te comprueba los tipos de los parámetros del código que vas ejecutar. Tambien puedes anotar funciones como @private para controlar el alcance de llamdas, marcar el @constructor , o indicar quien @extends, @override o @interface. Es una pasada.
Estas anotaciones ya son estandar en el mundo javascript. El jsdoc toolkit, los tiene en cuenta igualmente (se ha roto un poco la compatibilidad de algunas anotaciones por cierto) y cuando te genera la documentación del código, marca los elementos en consecuencia. Además, por ejemplo el editor que yo uso Webstorm (es de pago, pero los 60 euros que vale la licencia personal los amortizar cuando hacer el primer refactor automático desde el IDE) tambien tiene en cuenta estas anotaciones, y en el análisis estático de código que te hace te va indicando cositas que no le gustan.
Podeis mirar CAAT y la documentación generada por JSDoc toolkit si quereis para ver como defino una clase en una closure de funcion implicita, como esta comentada y anotado el constructor, y la documentació que genera despues el JSdoc toolkit.
No os aburro mas.
-i