Estoy totalmente en desacuerdo con todos los que dicen usar NULL incondicionalmente. Permitir que una columna sea NULL introduce un estado adicional que no tendría si configura la columna como NOT NULL. No haga esto si no necesita el estado adicional. Es decir, si no puede encontrar una diferencia entre el significado de una cadena vacía y el significado de nulo, configure la columna como NO NULO y use una cadena vacía para representar vacío. Representar lo mismo de dos maneras diferentes es una mala idea.
La mayoría de las personas que le dijeron que usara NULL también dieron un ejemplo donde NULL significaría algo diferente a una cadena vacía. Y en esos ejemplos, tienen razón.
Sin embargo, la mayoría de las veces, NULL es un estado adicional innecesario que solo obliga a los programadores a manejar más casos. Como han mencionado otros, Oracle no permite que exista este estado adicional porque trata NULL y la cadena vacía como lo mismo (es imposible almacenar una cadena vacía en una columna que no permite nulo en Oracle).