а в чем суть проблемы?
Ты пытаешься свою реализацию DI сделать? И спрашиваешь как большинство будет воспринимать подобный механизм?
Если так, то лучше всего решать подобные двойственные трактовки явным образом. Как вариант сменить название интерфейса с Provider на SingletonProvider (название можно придумать по-лучше, главное чтобы было очевидно).
И аналогичный <SomeName>Provider который будет создавать каждый раз новый инстанс.
В koin это решили на уровне декларации, там есть single и factory.
Мне стало интересно какую семантику ожидают по умолчанию, думал что все за первый вариант проголосуют, ведь второй может быть полезен чтобы кастомные скоупы (типо объект на запрос) делать, а кастомные скоупы как по мне сложно и не нужно. В итоге я думаю что поведение - все по умолчанию Singleton самое правильное (потому что я так всегда использую, ага)