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.