Ok, the documentation says "It is useful for things like strings, although there is no reason it can't be used for other things". I used it for "other things" and let a service provide an observation type that is a list. In the LOOP packet, there it is still a list. But in the ARCHIVE record, it is a string instead of a list.
Then assume a template that contains:
#for $ii in $current.myobservationtype.raw
do something
#end for
Here the loop goes over the characters of the string instead of the list elements.
And it is the 'firstlast' accumulator that converts the original list to the string.
So the conclusion is: The 'firstlast' accumulator can only be used for strings but not for "other things" like lists.