Hey @loose1eaf, Looks like the second option presented by you make the most sense.
By following the second option you can avoid have many database records which are customer with an empty job_title and empty department_id for no good reason. It is best to create a record in a separate table and link them to a user, which can help you minimize the number of empty fields in your database in the first place.
All of the entities in your application are users and should be store in the user table, for each user who happened to be a customer,employee, or an admin you can create a separate record and tie those records together. As you mentioned, with a simple roles and privileges structure you can manage the privileges of your employee & admin users. The Laravel-permission package from spatie together with laravel Policies should work perfectly.
Good luck!