The time during an in-person interview should not, I repeat, should not be wasted on solving a single problem on a whiteboard. Having someone whiteboard a design or system, etc., sure. But having them do code on a whiteboard is idiotic since no-one actually works like that (well not since Lisp was invented).
When I interview people, I ask them about their experience, and how they solved difficult situations they faced. I find out a lot more this way about their abilities to lead projects; if you do it effectively you can quickly determine where people are exaggerating their team leadership skills, or the amount of design they were personally responsible for on a project. Read about behavioral interviews for good material on how to properly interview in this style.
Going through this process also lets you know if you actually want to work with the person. Which, IMO is more important than hiring the greatest programmer in the world, if that person is also a narcissistic, egotistical maniac (and yes, all us programmers fit that description, but you know what I'm getting at).
After all that, you have their test, their github account, references (OMG, you can call people they know or ask on LinkedIn, what?). That should be sufficient in telling you about their coding ability, and far greater than a 45-60 minute white boarding session in which all you found out is if they can properly do quick-sort (where do I pivot again?).
I agree that this guy probably could have handled this particular situation better, but I also think it's a stupid waste of time on the interviewers part to ask questions that don't get at the heart of someones experience.