Nanite is Great... Comparatively Speaking
Let's start with the hot take: Nanite feels good because the vanilla UE instancing has been less than stellar in more than one place. With Nanite, we can instance many meshlets at once, we can do fine culling for each of them, but hasn't it been the case before. Let's find out.
Instancing or LODs: Choose One
They hate each other. Let's say you have mesh LODs, for instance. Unless you group them in an HLOD together, each mesh component will be drawn as a separate draw call despite sharing the same geometry and material. If you group them in the same HLOD, they will benefit from instancing... at the cost of switching LODs altogether. Imagine a patch of the forest where trees just instantaneously change LOD all at once.
Occlusion-not-Culling
I've been spoiled by working with custom engines. There, you'd run your occlusion culling on the GPU, find out which instances are visible, and then compact the instance buffer and issue an indirect instanced draw call (or not, with GPU-driven rendering and task graphs).
That is not the Unreal way, however. In Unreal, you either render the whole instance buffer or not render it at all. You test the bounding box around all the instances. You don't even need to see one leaf of one tree to render all the instances; you may just see a portion of a bounding box containing empty space between two instances to render them all.
The Mandatory Prepass
Now, one unexpected corollary of this is that you almost always render everything in pre-pass. But what about the bUseAsOccluder checkbox, say you? The problem is multiple things can override it, so you may almost never have it actually working. It's a known issue, but then again, I don't expect it to ever work correctly on the instance level (or component, for that sake) because that would mean having different instance buffers for the pre-pass and the main pass.
But Won't We Do Everything Nanite, Anyway?
So, why bother? In my opinion, there are certain geometry types that don't 100% optimally fit Nanite. Any foliage or other heavily alpha-tested geometry comes to mind. Besides, in case of a very expensive vertex shader, one might not want to render geometry twice. In any case, it's good to have options — and ones that instance well.