When using hook_user_login to redirect a user to the correct language this is also triggered during password reset. And the hook params do not provide a way to deal with this.
This How can I redirect users on login based on their chosen language? post details multiple not working concepts.
And i can't comment cause of the silly reputation thing, while i'm a developer for over 10 years... (getting tired)
I guess the form alter is the ONLY way.