Hi Jethro,
Federated provider data (like the photo url from Google) is updated every time a sign-in occurs with such provider. To access it, though, you have to use
FirebaseUser#getProviderData() (or equivalent in other platforms) and then look up the specific provider you care about.
Top level data on the user object (e.g. photo url, retrievable via FirebaseUser#getPhotoUrl()) is only set automatically by Firebase Auth on the original sign up event as a convenience, but after that, it is left to the control of the developer to update it manually (via methods like FirebaseUser#setPhotoUrl() ).
In order to support your use case, the recommendation would be to:
1) After sign-in (or whenever you want to update the picture url), check if there are discrepancies between the photo url that comes from FirebaseUser#getPhotoUrl() and FirebaseUser#getProviderData() ->[google provider] UserInfo#getPhotoUrl()
2) If both values aren't the same, call FirebaseUser#setPhotoUrl() with the value coming from Google.
Reply back if you have further questions.