Using the built-in listener for clicks would be better.
What happens is when you use a GTM click listener it listens for clicks that matches your trigger and sends your data, and no code change is required to set this up
while using the code implementation you would have to change the code, push data with event into data Layer and make a trigger in GTM to listen for that event to fire your tag.
So, in conclusion using the GtM listener would be better because its less time consuming, easy and can has version control as well.
Read the related article: https://support.google.com/tagmanager/answer/6106961?hl=en&rd=1