Hmm, in general no they don’t need to, however there are exceptions and they are meant to fully support replication. I cannot have an array that mixed replicated and unreplicated UObjects in engine so its either all or nothing.
That being said I don’t see why I couldn’t add a bool to universally not replicate scripts on a per grippable basis. That would allow people to turn it on when required and off when not. In your case you could likely leave it off for most (or all) of your objects. I have people making modular level editing tools that require the replication and some advanced logic scripts that require it as well.
What engine version are you working with? I would need to know how far back to port it to accommodate you, also if you have upgraded to a more recent engine version the global lerp to hand setup may be good for your uses.