I believe 2i2c has a custom setup, where they can make some profiles or options invisible (and not accessible, even if requested via API), based on groups.
https://infrastructure.2i2c.org/howto/features/profile-list-restrict/
This is a really nice feature.
In our use case, we have few groups of people that might have varying access to images (i.e. interns), or to beffy machines (using tolerations and node_selector, but with only few whitelisted people, and not everybody else in general). Right now we need to have multiple separate instances of jupyterhub (and use different allowed_users lists in them) for this to work.
But with what 2i2c is doing, it should be easy to have it all in one instance.