I ran into a similar issue that was solved by this answer – turns out it was a weird matter of CDOs. The UStaticMeshComponent (and/or the UStaticMesh) created in the ctor of the component I was trying to create/add at runtime only worked for one instance, presumably because the CDO paradigm has the Component constructor only ever called once; all future instances were present but invisible. I moved the UStaticMeshComponent and other init things from the ctor to BeginPlay() and everything worked nicely!
I don’t understand why the subsequent instances couldn’t re-use the mesh data, though. Even assuming each instance was pairing the same mesh with its own unique transform should have meant that only the latest instance was visible, rather than only the first. I’ve asked my own question about that!