Most <xen: compiler tags usually end up calling a template helper. My solution usually is to just achieve what I want using a helper and skip the additional step of having a <xen tag.
Compiler tags are nice as you can, I believe, can use named parameters and in any order.
You can have just as many parameters in normal {xen:helper helpername} tags but they have to be in the same order as they are defined in the function signature.
For one that I did recently, this means I have this:
{xen:helper helpername, '', 'paramter', '', '', 'parameter2'}
Whereas if I could create a xen compiler tag I could do something like:
<xen:tagname paramter="value" paramter2="value" />
So, ultimately, the only difference is the compiler tag is neater and easier to use.