Because that's what XML parsers do.
The XSLT processor can't convert the characters back to entity references because it doesn't know that they started life as entity references - the XML parser doesn't pass on this information.
If you really need to preserve the entity references, the only way to do it is to convert them into something else first (for example ‐ becomes <?pi hyphen?>), by preprocessing using non-XML-aware tools such as sed or Perl,and then reverse the process afterwards.
However, this only matters for human readers of your output. Any well-behaved software processing the output will treat the Unicode character as 100% equivalent to the original entity reference.
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference