Why does the phrase "Guess who?" have a question mark?
Because it is an interrogative phrase.
Interrogatives, or questions, always end with a question mark. Another way of putting it is: whenever we are asking a question we always use a question mark (a question mark implies that the author is requesting a response). If we kept the same words but changed the punctuation the concept would become more convoluted, making it difficult for us to understand what the author was implying. If I were to write, for example:
. . . or . . .
The context could be misconstrued in the sense that ending the phrase with a period creates a statement and doesn't necessarily request a response while ending it with an exclamation mark shows excitement, which is fine but again like the period it is not specifically requesting a response. Only a question mark really tells us that the author is requesting a response.
I hope this helps!