Samplicemente, il valore NULL è un valore diverso dalla stringa vuota "" ; NULL è un valore che non contiene nulla, e di solito lo si usa per indicare esplicitamente che non è stato restituito nessun valore, mentre una stringa vuota è una stringa come tutte le altre, solo che non ha nessun carattere dentro!

Concettualmente i due valori sono diversissimi, anche se, grazie al fatto che PHP effettua delle conversioni di tipo automatiche continuamente, non sempre la cosa è visibile chiaramente.

Per esempio, se su di una URL hai:

pagina.php?nome=

avrai che $_GET["nome"] è uguale alla stringa vuota "" , ma se per caso usi is_null($GET["nome"]) per verificare se ti è stato passato un parametro get, non riuscirai a intercettare e dare errore per una url del genere, visto che appunto ""!=NULL ...

Qui trovi una completa spiegazione dei tipi di dati in php, che spiega ancor meglio NULL

http://it.php.net/manual/it/language.types.php