Luke, If you use annotations for everything that you intend to be private then how do you re-use a class across more than one module?
For example, suppose I have an interface A. I have two different implementations B and C. Both B and C are singletons for two different modules (and each of the two modules are optional at runtime). Now suppose a have a third class which records metrics about the instance of A for each module. I would need additional code to bind him properly. Either I write two providers, or annotate two provider methods and construct each manually (which is inconvenient in the grand scheme of things).
Maybe it would be useful for me to see a code snippet (or blog post) that clarifies your usage pattern.
Also, it would be nice to hear what you dislike about private modules. Most [good] software is decomposable and guice modules just the same; it seems natural to be explicit about what a specific module provides the rest of the application.