When is it preferable to precreate objects & keep them disabled until needed vs dynamically instantiate them?

I’m not super familiar with Unreal development yet, but looking at the internal shenanigans of games in general, e.g. in Dark Souls series, they constantly precreate objects that get “spawned” in later, even including some projectiles. I suspect that’s in part due to limitations of how the level loading and/or allocation in their engine works, but I’ve also seen this done in Unreal Marketplace assets even though Unreal engine has much more freedom in the ability to instantiate objects dynamically & its garbage collection. The docs on spawning actors doesn’t elaborate much on why either is preferable – it just mentions that they’re both possible.

My suspicion is that there are three main reasons why precreating objects like this is preferable than instantiating them separately:

  1. It is useful for previewing them visually while editing them in the blueprint editor
  2. It is useful for replication as there doesn’t need to be any additional explicit communication with the server later to instantiate the objects
  3. For games with saves, it is easier to save the state of the world this way when there are fewer ephemeral dynamic objects

but that these are all just conveniences for the game developer & there isn’t an inherent limitation to require precreating the objects vs dynamically instantiating them. Is that accurate / are there any additional reasons why precreating the objects would be preferable (e.g. performance)?