Short version: The main reason is to allow you to practice with functions are return values and anonymous functions. Note there is a difference in how the two approaches would work.
A more detailed answer is below.
It looks like that message got skipped, due to timing and an unrelated post "hiding" it. Sorry, @Stefanopolous.
In a sense you're both right in that just using alerts and no functions would from a user's viewpoint accomplish the same thing. (There is a difference, though ... I explain it below.)
The main point of using the functions is pedagogical; it's giving you an opportunity to practice with functions as return values (and anon. funcs.)
The difference is how one would use adventureSelector. If it just called alert itself, then the user would trigger the first alert for example by calling
adventureSelector(1). As it stands, though, one would trigger it as follows
adventureSelector(1)();, which is equivalent to:
var vinesOfDoom = adventureSelector(1);
This type of thing wouldn't be useful here, but would be useful if, for example, you could earlier in a program make the decision as to which function you wanted returned, but that decision was expensive. Maybe, instead of just comparing to a number, you instead want to pass in a username, and you need to go to a database on another server and authenticate the user, which is an expensive operation. And, you want to use that user's name and some other info. in that profile to create a personalized alert, and may need to trigger that alert many times. You only want to make that decision once. That's only possible if you return a function.
Having a realistic example would be too complex here, though, and would detract from the point of the challenge.
I can explain this last bit better if needed (well, come up with a better example), but note there are many instances where returning a function is useful and/or needed.