The %sc start callback function is called immediately after the window is first painted and before the user gains control. If the call results in changes to the display then the callback function must return 1 (not 2) in order to trigger a refresh of the screen.
I would have thought that this covers all requirements. If not then it would be possible to provide an alternative with a call immediately after the window has been created.
It is worth noting that data can sometimes usefully be created in the middle of a sequence of winio@ continuations. For example, a %gr graphics region can take drawing instructions after the %gr but before the terminating winio@.