A razão é que, de acordo com a especificação SQL,
Foo IN(A,B,C)
traduz para ( Foo = A Or Foo = B Or Foo = C )
. Assim, se tivermos Foo In(Null, 1, 2)
obtemos Foo = Null Or Foo = 1 Or Foo = 2
. Desde Foo = Null
é sempre UNKNOWN
e avaliado como False
para fins de filtragem, Nulos em sua expressão IN não retornarão resultados.