Ticketing system is usually necessary if there are many tickets. But putting many items in one SharePoint list is usually not a very good idea, because after reaching 5k limit, it will become more and more difficult to work with this list, especially programmatically.
Also there's a limit of how much unique permissions can be in a list.
I would recommend considering a distributed approach. So for example, create a special list on every My Site, and setup folders for Categories in this list, providing unique permissions for each folder. It can be done e.g. via a simple CSOM console application. Later similar app can be used to update the lists, in case if new Category appears, or something like that.
Once you have all those special lists on My Sites, one list per user, you effectively got rid of any limits-related issues.
Now, to collect all these items and show them in one place, just use search. Search respects permissions, so no problems here. You can configure filters for different categories. Also, you can customize search output if you need. And all these refinement features will come in handy too, I think.
The main spike here with this distributed approach is that search can sometimes lag a little bit. The delay should usually be somewhere between 5 and 15 minutes, but please try it yourself for several days and see if it is OK. Because in certain situations, I read that people had experienced up to 1-day delays.
Provider-hosted app approach
Another approach would be to create a provider-hosted app. Provider-hosted app can do event receivers, so permissions are much easier to manage.
But I would recommend thinking even further. With a provider-hosted app, you can consider storing the information in external DB and displaying it via a completely custom interface. In this case, you can guarantee quality of the system to your customers, and it will be really fast. Solution based on MS SQL can directly handle relatively huge amounts of data, processing and filtering millions of records with only milliseconds of delay...
Solution will be easily transferrable to any other platform, because it only depends upon SharePoint authentication system.
Modern web interfaces are very easy to create. There are tons of js libraries like KnockoutJs and AngularJs for modern-looking, dynamic UIs; you have Bootstrap and Font Awesome and similar toolkits for building your solution with tested, reliable, good-looking and mobile-ready blocks.
SharePoint is unfortunately notorious for providing spikes in most unexpected places, so relying on completely custom solution additionally allows you to provide relatively very precise estimations for when solution will be ready.
And finally, I cannot resist mentioning, that apps and provider-hosted apps in particular, are actually the recommended by Microsoft way of doing things. "The right way", if you will :)