Es así en SQL (como lenguaje lógico) porque nulo significa desconocido/indefinido.
Sin embargo, en los lenguajes de programación (como, por ejemplo, C++ o C#), un puntero/referencia nulo es un valor específico con un significado específico:nada.
Dos nadas son equivalentes, pero dos incógnitas no lo son. La confusión proviene del hecho de que se usa el mismo nombre (null) para ambos conceptos.