Presumably if you have tenants and users you also have roles within tenants too, regular users vs tenant admins?
You might consider a TenantRole so that your join table tennant_roles associates users with tenants and their role in that tenant.
I have generally found using schemas a safer approach to tenant isolation and often a security requirement for many organisations because they don’t want their data being caught up in Anton Piller orders (Impoundment orders in the USA).
However if you have use cases where there is sharing of resources across tenants aside from just the users and tenants tables then you end up having to put those tables to the public schema, e.g. you might have projects where users outside an org tenant can be invoted as team members or a jobs board where service providers can bid on the work.