In my MVVM projects, I usually did what you offer: one ViewModel for UserControl with another ViewModel that combines them all together.
That aggregation of ViewModel will often be a ViewModel for a window, and not for another UserControl, although this is not necessary and may be more a result of my preferences and history, and the fact that I mainly work in WPF.
In one place where I do not have a separate ViewModel for UserControl, I create very specific reusable UserControls - such as buttons with specific visual effects or custom sliders.
This is reflected in my project structure. I have two standard folders for UserControls (which do not have ViewModels) and Views, which are either Windows or UserControls and which always have ViewModels.
source share