In short, this design choice is in the spirit of Java.
The decision to throw an NPE when a switch expression evaluates to null is along the lines of other decisions made in Java, which always prefer throwing an exception to silently handling the null in the "obvious" way. The general rule seems to be that, when in doubt, the Java designers choose the option which results in more boilerplate code.
Some would call this frustrating and unfortunate (myself included), where others will religiously disagree, maintaining that this is a "safer" decision.
For another frustrating example see the enchanced for loop, which also throws an NPE if the collection is null, instead of acting as if the collection was empty. There are many more examples in the JDK library, where the caller must dilligently check all edge cases just to be allowed to treat them uniformly with the "normal" cases.
As a third notorious example, just look at the mess which the "language feature" of checked exceptions makes to your code.