You can give it a go but I do think the BeginPlay solution isn’t perfect though. There is a good chance that if there’s high latency or a dropped packet, some values may not be ready in time (I do not believe I have ever encountered this though).
I cannot confirm this. It is entirely possible that Unreal does something where the spawning of a replicated object is only triggered when the client has all the initial replicated values ready.