rarely have a single static mesh* in my scene that isn’t* part of a blueprint
it should be the exact opposite especially for Static Meshes
if a static mesh is going to be static, it should be part of an HISM unless its nanite (even if it will be interacted with later)
array variables should be empty unless it will be used for logic, for that look into structs + data tables. With DTs, arrays can be populated only when they’re needed but then cleared later on.
stitching modular assets with BPs is great, but leaving them in the BP after packaging is not better than converting them to HISMs
references to logic should be stored in HUD / Controller (like player comps) so other BPs can access them easily, that way you won’t need BP interfaces either for many use cases
BP size should be minimized wherever possible, for that you have Macros + Common Functions library and also reduced variables, for that you have the Edit tab > Delete Unused Variables
overall, BPs (or any logic) should be like LODs for a mesh where ever possible