Firstly, indeed i would never alter main kentico files, if any adjustments need to be made clone it first and work off of the clone!
Onto the item at hand, i've seen what you are trying to do (where you can checkbox the things subscribed to or things you can possibly subscribe to), and check/uncheck and update.
One thing to ask is, i assume you currently have a Form (kentico Form) that a user fills out to 'subscribe,' once they hit submit how are you handling the form submission to subscribe them?
Honestly i would just create a custom web part that takes the user's email address, and uses kentico's API to make a checkbox list of possible subscriptions (and check ones they are subscribed to), and handle the "Update" button to see which subscriptions are checked/unchecked and make adjustments accordingly. As in most things, there will be some form of a joining table that you can update through the API.
But a lot depends on what custom logic you already need and how can it most cleanly be implemented and easy to maintain.
The reason i wouldn't do #1 is any change will require a recycle, and the logic can be done through a custom webpart instead. The custom events are great for tasks that need to occur when someone happens that you have little control over otherwise.
Can you explain a little more your processes, where is the subscription and what are you subscribing to?