Here's the source for the password hasher. https://github.com/dotnet/AspNetCore/blob/master/src/Identity/Extensions.Core/src/PasswordHasher.cs
You can clearly see that the generic type TUser is only used in 2 public methods and in those methods the parameter itself is never used.
Why was this class genericized like this?
Interesting question. It seems likely there for extensibility purposes. A good comment from this article:
It is useful for cases when you implement your own IPasswordHasher. For example you may need to verify the password and you need the salt for the user if you salted your users password in your custom hasher. If the user wasn't provided you would need to get the user via a second trip to your user store if they only gave you the user email or id so could be able to hash passed in password against the sale for comparison.