Here’s an approach how to solve it with existing Discourse functionality.
We had a similar usecase for a “moderator per category” feature, and solved it by splitting the forum into multiple Discourse platforms with a common login. And then you can assign different people to be moderators in each of the forums. It’s quite similar to how the different parts of the Stack Exchange Network are linked together – with a common login and a site switch menu in the top right.
That’s quite straight-forward to do as Discourse comes with integrated single-sign-on (SSO) provider and client code, so you can dedicate one Discourse platform for signup, the others as federated forums, and have a dropdown menu in all that allows to switch between them. Managing the codebase is also quite straight-forward as Discourse comes with the option of doing a multisite installation (one codebase serves multiple domains and databases) and, best of all, a multisite Discourse installation does not eat more server memory than a single-site installation as the server processes are shared. Very much unlike multiple single-site installations in parallel.
The manual I linked above describes how to set this up and has a link to our codebase as well. Expect it to take some time to get this done, but then it works quite smoothly, including the login flow (not perfect yet, but smooth). We have it in live use on edgeryders.eu since a few months. (It’s ok if you register there just to test out how the login and site switch process works.)
Beyond “moderators for specific categories”, the approach above has some other benefits that we needed:
configuration settings (frontpage look and feel, badge system, anti-spam measures) can be adapted in each of the federated forums separately
forum operators get their own domain, own design and own admin status, which is important for a sense of ownership and a proper “community feeling” in their respective online community
plugins can be enabled on the different federated forums independently (even though they will be installed on all of them due to the multisite’s shared codebase, they don’t have to be enabled on every site)