Well I'm not expecting an answer so here is my solution for anyone else coming across this:
Google does indeed cache all data for UserPrefs while navigating through inbox, sent, trash, individual mails etc.
As UserPrefs are saved they are sent to Google's server correctly, but the last pull will remain in cache, so there is no way around a refresh. I reduced my use of UserPrefs except where necessary, and informed the user politely to refresh to see changes take effect.
There is no documentation on this and maybe Google will change this in future, so if anyone finds a solution please do post it here for the community's sake. Thanks