I've been using Solution 2, FOR XML PATH, for a while with good results. I use STUFF as SSChampion mentions to get rid of the extra separator.
One other thing to watch for with FOR XML PATH is that since it's creating XML, it will encode the characters "<", ">", and "&". You'll need to unencode them manually. Something like this.
-- The REPLACE calls undo the XML encoding
-- and STUFF deletes the first comma and space
', ' + ...
FOR XML PATH('')
, 1, 2, ''), '& lt;', '<'), '& gt;', '>'), '& amp;', '&') -- See note below
On the last line in the example, take out the spaces between the ampersands and the "lt;", "gt;" and "amp;". This forum software was encoding my example of unencoding so I couldn't get it display correctly. How ironic! 😉