I have come across this at work several times.
I found a solution using a custom C# CLR Aggregate function. Interestingly enough, the example MSDN uses for aggregated functions is concatenate:
Its fairly simple to implement if you have a version of Visual Studio handy. I modified this to include a custom delimiter. I don't know what MS has not included this function in any SQL build, but there is CONCAT starting with SQL Server 2012
Also. There is also an article here, at sqlservercentral.com, that explains how the above example is implemented.
I find this incredible useful and more straightforward than a CTE.