Another vote from me, with a similar issue.
I’m working through C++, and have noticed that the PlayerState isn’t fully initialized (and linked to the PlayerController) even by the time the PlayerState is hitting its BeginPlay() on the client side.
The work-around I’ve done is to tick on the PlayerController until it sees its PlayerState, then call my custom initialization code. Not ideal.
If anyone has instructions on how to do this cleanly, that’d be great.