Update user fields programatically resets password
If you look user_save there special code at the top, that prevent updating password if pass not provided on $updateUserParams. So please check your other modules or Rules, that possibly resetting password each time, then user_save called.