I think it's both. :-)
<nitpick>
The "Why Constructors?" section makes me nervous, though. To say, as you do in the first bullet, that a constructor "is the one guaranteed thread-safe unsynchronized method an object can have" makes it sound as though you don't need to worry about safe publication of the object being constructed as long as you don't leak "this". But you only get the guarantee that other threads will see completely initialized values of
final fields. (See
http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#d5e28755 for an example.)
Your second bullet hints at this, but in a way that seems to imply that you don't have to worry about the thread-safety of objects referred to by final fields. Final doesn't magically confer thread-safety; if I have a final field that points to a mutable object, that object still needs to be made thread-safe if the final field is shared by multiple threads. All that final does is guarantee complete initialization (in the absence of leaked "this").
And you don't mention one of the big drawbacks of constructors, which is that you can't in general safely call overridden methods in constructor bodies.
</nitpick>
That said, I think the Guice abuse is very cool.
--tim