I often see some database design like this:
Case 1:
UserTable
--id[auto increase]
--UserName
--Password
--Em
Your question is essentially the advantages and disadvantages of using natural vs surrogate key.
Flexibility is the primary concern, with surrogates key you can change their username much more easily. And it might be possible in the future that you may need to allow duplicate usernames, e.g. mergers.
Speed is another concern, on a frequently accessed table like the user table, it's generally faster to do a join on integers than on strings.
Another is table size, when used as foreignkey, you'll have to store the whole key's value. Surrogates are very compact, and is much smaller than natural keys.
Most ORM also requires the use of surrogate because it provides consistency between tables.
Also, on many systems, it may not necessarily be safe to assume that email is unique.
I agree though that in a relationship table like UserRole, it's generally best to use a primary composite key from the foreign keys.