I'm just guessing here since I'm no scala expert but according to the documentation for the Any class in scala I'm thinking that since null isn't an object, it doesn't derive from Any and as such doesn't match the first listed case.
Adding the code sample below. It prints "something else" when run.
val x = (2, null)
x match {
case (i:Int, v:Any) => println("got tuple %s: %s".format(i, v))
case (i:Int, null) => println("something else %s".format(i))
case _ => println("catch all")
}
After more research it seems like null should match with any sense the documentation says that it extends AnyRef which extends Any.
EDIT: Like everyone else has said. The first case doesn't match null on purpose. It's specified in the documentation.