I would expose the Public Property Get Subforms As VBA.Collection from the parent form so it is only ever built once. Putting it on the subform was just to prove it could work that way, but it belongs on the main form as a specialized controls collection. Doing that work on every subform is duplication of effort, and therefore a waste.
One HUGE advantage in VBA of using properties is that they are evaluated during debugging in the locals window, so if you expose objects as properties, private or not, and break into code, you can minutely dissect and drill down into your class structures, which I find very handy. If I write a custom class, most of its members, particularly objects, I'll expose as properties, which makes looking into that class very easy.
By way of example, you can do this with a bound form, break into code on a button click or something, open the locals window, expand the Me node, find the recordset, find the fields collection, find a field, find that field's Value property, and in doing this notice how you can drill down into the current state of the object tree. If you use classes or write classes in VBA, your properties will be visible and evaluated in this view.