Brain teasers are not good hiring criteria. However, when you encounter them in a job interview, that does not mean they (or your answer) are meant as such criteria. Good simple criteria for hiring people simply do not exist; people aren't themselves during job interview, they have probably prepared it and thereby skew the outcome.
Therefore everything that's said and done during a job interview, whether it is a discussion about your previous projects, some brain teasers or talking through some code the applicant wrote (or did not write:)), is irrelevant. It's all just bullshit to get the conversation going. Once this conversation has taken long enough for the potential employer to get a good gut-feeling about the applicant, the interview is done.
While some facts may be checked beforehand (references, education etc.), there's really not much more to go on for the employer than that gut-feeling. When brain teasers help to develop that gut-feeling, they can be a great tool for judging applicants.
However, when hiring people, I never use brain teasers. What I do is let them discuss a piece of code. I don't care whether they wrote it or not (or whether it is crap code I wrote myself:-)), I don't even care if it is good code or not and I don't care in what language it is. What I do care about is what the applicant has to tell about it. What would they change, what do they like or dislike, why did they choose this piece of code, which decisions do they _not_ understand etc. etc.
While hiring new people is always a gamble, simply discussing a piece of code engineer to engineer is probably the closest you can get to objectively judging an applicant.