He most likely means instancing in combination with manual vertex fetching and/or merge instancing.
Yep, that exactly.
Manual fetch is practically none different in performance nowadays from fixed-function (hardly measurable). which is very nice.
So "all meshes must be the same" is no longer really true for instancing. Or rather, it is true insofar as all meshes are the same, having no vertex data at all. You pull what you need from a buffer, using the vertex id and the instance id.
You still need the same number of vertices since that is the way instancing works. However...
...there's primitive restart, and there's points at infinity (or, you could just manually cull vertices above some threshold).
So, the requirement is really only "approximately the same count", you just leave the last bunch of vertices go waste. In principle, you could even combine any number, only just that might be wasteful. Imagine instancing objects with 50 and with 5,000 vertices together. The 50-vert instances will burn 4950 vertices to no effect. But if you have, say, 4,875 and 5,000 vertices (and completely different vertex positions, of course) then... who cares. Burning a couple of vertices will be way faster than drawing the meshes in separate batches.