This is a known issue with replicated pawns. The internal flags that are used to determine local control have not been properly set up yet when the BeginPlay event is called.
It is possible to work around this issue, by moving the logic that depends on the IsLocallyControlled check to the PostLogin event on the game mode. Inside the PostLogin event (and thereafter), IsLocallyControlled should return the correct value. PostLogin only runs on the server though, so if you also want to handle it on the client, you’ll need to create a custom replicated event and call it from PostLogin.