I updated the code with your suggestion, and get identical results - the employee ID is unchanged
I can see the employee ID in API Explorer on a GET user only when expanding the employerInfo field - I'm suspecting that I need to also expand the employerInfo field on the PATCH update, and your suggestion seems tio do that, but I'm just guessing at this point:
In your python code, use apiclient.sanitize_for_serialization(...) on the updateuser variable to get a string of the JSON body that's getting sent to the API to verify it's producing the same structure as the working request above.
The PATCH request doesn't support an expand parameter. The object you get back will never have the employerInfo property. You need to do a GET on the user with the expand again to validate the result.
The PATCH does work as expected in the API explorer. When I ran using the sanitize_for_serialization, I noticed that the JSON body uses "employerInfo" and "employeeId", but python should use "employer_info" and "employee_id". Here's what I finally managed to get working: