So I have seen both sides of this question and actually been on both sides as well. In the programming world there seems to be a fine line between great interviewing for the sake of weeding out candidates properly, and that of showing off how much the developers on the hiring side of the table know.
For example, it makes sense to ask someone to pseudo-code or even legitimately code some logic applicable to the job at hand, but I question the usefulness of the interviewer asking a theoretical question like "explain covariance and contravariance" or some other question about a languaute which only the creating product team is probably well versed in (i.e. the .NET Framework team at Microsoft).
I know the initial reaction to this question might be, "Sure, it shows how a candidate does answering a tough question they probably will not know, yada, yada, yada", or "If it is applicable, then 'Yes'..." However, more and more it appears that these types of questions are about the interviewing team showing the candidate how much they know. (I have been on that side of the table when my collegues have done this, and my initial thought was about how irrelevant the question was.)
How can these types of detailed technological questions be useful in an interviewing situation?