As an English speaker who took a lot of English tests for ESL learners, whenever multiple choice answers were suggested this way my reflex was to look for a way each might actually be said in an actual situation. Very frequently I would find some scenario in which one of the "wrong" options could plausibly be said. This was fun when the scenario was bizarre and challenging to find, but frustrating when it revealed that there was no good reason for the "correct" answer to be "correct".
In this case I wouldn't even have to look hard; "Yes you may" is completely grammatical, and an absolutely appropriate answer to the question in a context that isn't "when asking for somebody on the phone". And I can easily imagine it being said even in that context - as a joke for example (people often give "weird" answers to "may I do X" or "can I do X", either as a joke or to make a point that you should have used "may" instead of "can" or vice versa. Especially adults towards children), or just someone with unusual speaking habits. I would absolutely hate having to pick one answer as "correct" or "incorrect" on such an open-ended question.
Heck, even with your proviso that "Yes, you may" is only used for giving permission, I can easily imagine a scenario in which John is actually asking for permission. For that matter, do we even know they're on the phone or is it just assumed? Maybe your students didn't all make the same assumption.
Also, if you go by "may" being for permission, why is John asking to speak to Ali in a way that suggests he's asking permission in the first place? As Snow points out, it's not the only or even typical way of asking to speak to someone on the phone. Maybe the father is answering that way because he's tickled at how uber-polite John is being.
I guess the question is, what is it you are expecting your students to learn from this question, or what knowledge are they supposed to display? Are you teaching them about English phone etiquette specifically, or is this about general English grammar? Talking on the phone is not like "please" and "thank you", where the formulae are pretty much fixed. There are some fixed formulae, but you can manage fine without using them. Why is "Hold on please" the correct answer, and not "Sure, I'll get him for you" or "OK, wait a minute" or "Just a sec - ALI JOHN IS ON THE PHONE FOR YOU ... NO I DON'T KNOW WHAT HE WANTS ... COME ON DOWN ALREADY"
ETA: When you say you haven't heard native English speakers say "Yes, you may", are you talking in the context of phone etiquette or in general? Because in general, I can testify that as a child in the United States adults told me "Yes, you may" all the time. You might be less aware of it since it's not used as much between adults, except to humorously emulate an adult-child interaction, but your example is between a parent and their child's friend, so...