Client players occasionally spawn outside of the map

I have an indoor multiplayer map that I’ve built out using blueprints containing instanced static meshes. In-editor it’s working fine, but once it’s packaged and I’m playing online, clients will occasionally spawn on the roof. This is never an issue for hosts, and it always seems to happen in more or less the same place:

This area is something like 5m tall and 5m wide, which should be plenty large enough to spawn a pawn into. I figured at first that this is due to a collision issue, perhaps with the instanced static meshes. I did have an issue after switching from merged meshes to instanced meshes where none of the spawns were valid and I’d never spawn. This was resolved, however, after I disabled collision on the floor pieces and replaced it with a simple box component.

At this point I’ve replaced collisions on the floor, walls, and roof with box components, set Spawn Collision Handling Method to “Always Spawn, Ignore Collisions” and overridden default pawn spawning behavior in the gamemode so that SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn. These things may have improved things but it’s still happening.

How in the world is this even possible? Shouldn’t spawning locations be dictated by the server every time?

edit: I just killed a client >100 times in in-editor standalone mode, could not recreate the issue. It only seems to happen in online packaged builds.