Why user_pass column in wp_users table is varchar(64)

It is because of different encrypted algorithm. Sometimes users will override the MD5, which is the default algorithm, and add their own, which might need a little longer length to store the password.

Take a look at the Q&A’s »What data type to use for hashed password field and what length?«, having detailed information about hashes and their length, at Stackoverflow for reference.