The STEP file has one geometric set entity, 245 manifold_solid_brep entities, and 2 brep_with_voids entities.
Alfter exploding the top level block, Rhino has 14 blocks, 1 point, 1 surface, and 232 polysurfaces.
Without digging in too deeply right now, here’s my best guess.
The single point comes from the geometric set. I can see that for sure.
The single surface is closed, like a sphere or torus. It and the 232 polysurfaces make up 233 of the manifold_solid_breps.
When Rhino can’t join all of the surfaces from a step brep into a single polysurface it puts all the pieces into a block. Also, since Rhino doesn’t have something equivalent to a brep_with_voids, it puts the polysurfaces from each part of one of those into a block. So those 14 blocks are the 2 brep_with_voids and 12 manifold_solid_breps that didn’t join up. It is possible that a component of a brep_with_voids did not join porperly. Its pieces would be a sub-block of the block for the brep_with_voids.
So when that same part is imported inside of a much larger assembly, Rhino probably reads the tolerances different and that’s why it manages to join more parts and generate less blocks…
(And just to note, both Siemens NX and Unreal Datasmith manages to load this STEP as 1 part with 247 bodies regardless of whether it is in a single part or a larger assembly. To me at least, that’s a more expected behavior, regardless of what is technically correct.)
This is really problematic when you import a large assembly, since you get “parts” in the assembly tree which weren’t originally there. If this is a convenience feature, there should be an option to disable it. Loose geometry is not as bad as hundreds of extra blocks!