First, as mentioned by @marc-s in the comments, both representations are semantically equivalent according to the XML spec.
The representation of an empty element is either a start-tag
immediately followed by an end-tag, or an empty-element tag.
http://www.w3.org/TR/REC-xml/#NT-content
See also:
https://stackoverflow.com/a/2279530/2266979
In the comments, you clarified that the self-closing tag representation involves fewer characters.
That only matters when consuming the XML outside of SQL Server, since in the server it "is stored internally in a binary format" (https://technet.microsoft.com/en-US/library/ms345115(v=SQL.90).aspx).
If you are consuming the XML outside of SQL Server, where these characters would matter, you have probably converted it to text. However, when you do that, SQL Server (2008, anyway) automatically uses self-closing tags.
For example:
SELECT CONVERT(varchar(max),CONVERT(xml,'<tag></tag>'));
Will return:
<tag/>
So all you should need to do is convert your final result to text.
This assumes that you have typed XML. If you create your XML with FOR XML PATH without specifying the TYPE keyword, you are essentially just producing text which looks like XML.
So this:
SELECT CONVERT(varchar(max),(SELECT '' AS 'tag' FOR XML PATH('')));
Will return:
<tag></tag>
If you instead use the TYPE keyword:
SELECT CONVERT(varchar(max),(SELECT '' AS 'tag' FOR XML PATH(''), TYPE));
You will get:
<tag/>