Well some people want great Java Developers, great C# developers, great C++ developers, etc. If that's your case then go with A and more power to you. One concern I would have is if they cannot reason to solve the problem how can you expect them to reason and solve your business problems?
Other people just want great developers who can work in whatever language is required. They think of/model the problem and then implement it in whatever language. If you suddenly decide .NET sucks and switch to Java or vice versa, these are the developers who won't jump ship or refuse to learn. Also if you get some type of automation package/calculation package which has a proprietary language and you need some tasks automated, these are the types of developers who can do it. Real life example...I needed to figure out a custom proprietary scripting language for a mapping software package in order to extract zip codes for custom drawn regions for an old employer. Another example....my current employer has a proprietary property management system which contains a custom language for writing reports... In any case, if you get someone who cannot think logically but is familiar with the syntax of language X, you will be in trouble when situations like this comes up where you need someone to work in a different language.
Also on the white board there is extra pressure/nervousness so no one is at their best. Plus I highly doubt that when coding you get it perfect every time. I suspect you compile or just run and find some errors. Additionally it depends on the language. C is small enough that you can probably memorize most of the language/core libraries (though I wouldn't require it). Java/C# have such huge libraries (with such frequent changes) that memorizing the library is out of the question.
Also knowing multiple languages can work against you. C# and Java interfere with each other with me. But knowing multiple languages can also broaden your perspective, especially if you know a scripting language and a functional language in addition to C#/Java.
Still if both candidates solve the problem with correct logic, the guy with correct syntax probably has an advantage. If one solves the problem and one doesn't, then personally I would go with the guy who can solve the problem.
Still if someone claims to be an expert in Java and cannot declare an array of use an if statement or while loop, they might be lying. But I might understand if someone is an expert in Java but has been dong a lot of C# lately and tries to do Map or something.... Also if you get into specifics of the library, or someone does myArray.length instead of myArray.Length or string.length()/string.Length/string.length instead of string.length()... Minor stuff I would forgive. Or if they forget the argument order of some library call. Or a typo/semi colon here or there....