Вам не нужно писать провайдера, кроме как для интеграции с другими платформами.
Просто НЕ связывайте ваши ClassWithManyDependencies в области видимости SINGLETON и в классе, который хочет построить много экземпляров, вместо того, чтобы вставлять экземпляр ClassWithManyDependencies, у вас вставлен поставщик. (Guice может сделать это бесплатно для каждого связанного класса)
Для этого провайдера вы можете просто вызвать get (), если он не находится в области действия SINGLETON, он каждый раз создает новый новый экземпляр.
Теперь, если вы оказались в сложном случае, когда ClassWithManyDependencies полагается как на некоторый GUICE IOC, так и на некоторые параметры конструктора, то вы должны перейти к Assisted Injection