It seems that the correct solution is really using setTimeout or gsap delay call because of call order inside React hooks.
I found a good article about hooks which says that "useEffect is called in a bottom-up fashion, so the effects resolve first in the children, and then in the parent." Asynced setTimeout called after all calls executed in stack that's why this solution is fine. We simply change order of effects execution and effect with scrollTrigger inside child component executes after initializing of scrollerProxy in parent - that's our goal!
Thank again Zach. I love GSAP and this forum!