Hi,
I think you will be using a combination. Permission sets will make sure that people do not have access to data they should not see or modify. Tipical example is the accounting department. They have access to functions like payments, general journals, ... . This is something that should be blocked for other users.
How we handle it depends on the size of the company.
In smaller companies, you have people doing everything from sales, purchase, production, .., and you have the finance people. In that case, we only make two permission sets. Finance has access to everything, while the other (we often call them 'logistics') are limited in the use of those tipical finance things.
After setting up the permission set, you can make several role centers depending on the function of the users.
In larger companies, the permission sets are more complicated. There you could have logic like the person having permission to modify the banc account numbers of vendors, can not have permission to post payments.
When creating the permission sets, you could make use of some tools that are available in the NAV world, but very often, I just go through the list of tables and decide per table what the rights should be.
If you set up permissions on tables, that should be enough. No need to set additional permissions on other objects. If you doubt about a table, then don't allow access to it. After making the permission set, be prepared to have some time to finetune it.
This is only my experience, I am looking forward to see some ideas from others.
kr,
Francis