Use of AccessControl for token whitelisting

Has anyone used AccessControl to manage token whitelisting within your contract?

For example, I have a swap control that will only interact with pre-defined tokens.
Normally for token whitelisting I set up a mapping of address => bool and have an addToken and removeToken function. Say in my example swap control I am using OZ's AccessControl for general admin stuff, I can also create a role like 'WHITELISTED_TOKEN_ROLE', and replace addToken and removeToken with AccessControl's grantRole and revokeRole, using the above role and token address as respective parameters.
I think the benefits of this are that you are reducing a single storage space with removal of the original whitelist mapping of address => bool, and you are utilizing functions that will already be in the contract anyway from the inherited AccessControl contract.
Does anyone else do this or have you seen examples of this in the wild? Would there be any downside to implementing whitelisting like this?

This sounds slightly weird, but somewhat reasonable.

However, it's not really saving on storage space!

Since whitelisting a token isn't access control, I would keep the special purpose implementation of addToken and removeToken.

Yeah, it does seem slightly weird, that's why I wanted to double check with others first!
One thing I didn't specify before is that I am dealing with upgradeable contracts, and even though it isn't saving storage, I believe it is reducing use of a storage slot that is just acting like a pointer for the whitelist mapping.
I was looking into this alternative use of AccessControl, which I'm already using for other things, just to cut down on occupied slots in case I need to upgrade in the future and not have to worry as much about storage layout.