So how does one deal with the clutter of many build tags?
One solution is to delete old build tags - but that is kind of sad, as you lose source data for a variety of historical stats. If you care about the stats, you suddenly need to find a different place to store the data.
Fortunately, git is a very versatile system, and there are alternatives. For example, you can stash them in a different ref on your central server. So when you apply a tag, you do this:
% git tag -m 'Annotation' MYTAG
% git push origin refs/tags/MYTAG:refs/builds/tags/MYTAG
Normally, you'd push them into refs/tags/, but by pushing them into refs/builds/tags/, they will not be "seen" by the default refspec, so normal developer git pull commands stay fast and efficient.
If they want to see the build tags, they can pull them in trivially using this:
% git fetch origin 'refs/builds/tags/*:refs/tags/*'
And if they want to remove them again from their local repo, they run:
% git fetch --prune origin 'refs/tags/*:refs/tags/*'