I see You opened a double issue for your problem
I have to repeat and explain some more
First You preload scene.
at this moment all default values of introduced variables are set, except onready vars
Next You call instance()
at this moment init()
is called
Finally you call add_child()
at this moment ready()
is called and onready vars values are set
So after all this happened You can safely change properties of your instance. I suspect You have a conflicting code, setting property in ready() with some exported value and manually after instantiation using another value. I understand this is why You have to call_deferred() - to wait for ready function, so it won't reset your manual value.
You just need to change this design :). Set properties for every objects consequently in one place, You just need to decide.