I have clients who said to use different tables for different users like
admin for admins
agent for agents
customer for customers
I know this is not a good approach
Roles are a good approach
but can you please explain to me that no matter what happen you should make one users table>
YES OR NO
Always use 1 table. You will save yourself so much time down the line. A user is a user. If the client isn't a senior developer and will be the one maintaining the code, they shouldn't be the ones deciding the database design
This if of course my personal opinion. Feel free to leave the thread open and to hear what others say :)
Users are users with different roles, permissions, pages etc. The authentication, notifications, authorization, etc are meant for users not matter what the type of the user.
The client isn't a developer, just show them each user type in different page according to the roles. Let him search for better database design.
The user is for authentication and the roles is for authorization, it is in my opinion important to keep those things in mind, and as @sinnbeck said, a user is a user, is a user.