I've decided I'm finally going to completely stop supporting SQS any more, because it has been obsolete for a very long time and is literally a dead end for anyone who uses it, actually preventing them from writing good scripts! Also answers on how to use it only helps people to stay in a backwards language that hinders their abilities (and doesn't help people who have made the leap to SQF). Thus, it is simply a waste of my time. Sorry!
Your code seems a bit confused compared to what you said you wanted to achieve, so I'm not sure what is going on (and I can't fix something that I don't understand the intention of). Also, you didn't say how you ran it, which was the important part of what I asked you. If you run it in init.sqf(/sqs) then it will only run once. If you run it from the init line of all playable object, which is what I suspect you are doing, then yes, it will run every time someone JIPs into an empty position (assuming disabledAI is on).
// Must wait until there is a player object spawned in to get the name of.
if (not isDedicated) then { waitUntil { alive player }; };
// Show this message once when player initially joins the game.
titleText [format ["Hello, %1, you are about to become a moon-fairy!", name player], "Plain down"];