Let me share my experience of implementing custom event tracking with Google Tag Manager.
Goggles Tag Manager (GTM) is a layer between your website and Google Analytics (GA).
We can use GA code for event tracking but in this case we have to write JavaScript in the website code. We have to look for event and need to add GA code inside that event handler. Since we have updated code, now we have to wait for the code release cycle to make it available to live site.
Using GTM it is possible to handle custom event tracking without adding code to the website and we can test our implementation with GTM inbuilt debugger before deploying to production website, at anytime.
And there is one more design pattern where we can implement generic custom event tracking for the whole website without adding JavaScript, but adding data-attributes to links, buttons or div- what ever event we want to track just add your data-attributes to the link and those attributes will go to GTM trigger and if it matches the rule, that event will be tracked. This design pattern is good for any kind of generic custom event tracking. I have implemented custom click tracking number of times using this pattern, and I am happy with it.