Eu discordo fortemente de todos que dizem usar NULL incondicionalmente. Permitir que uma coluna seja NULL introduz um estado adicional que você não teria se configurasse a coluna como NOT NULL. Não faça isso se você não precisar do estado adicional. Ou seja, se você não conseguir encontrar uma diferença entre o significado de string vazia e o significado de null, configure a coluna como NOT NULL e use string vazia para representar vazio. Representar a mesma coisa de duas maneiras diferentes é uma má ideia.
A maioria das pessoas que disseram para você usar NULL também deu um exemplo em que NULL significaria algo diferente de string vazia. E nesses exemplos, eles estão certos.
Na maioria das vezes, no entanto, NULL é um estado extra desnecessário que apenas força os programadores a lidar com mais casos. Como outros já mencionaram, o Oracle não permite que esse estado extra exista porque trata NULL e string vazia como a mesma coisa (é impossível armazenar uma string vazia em uma coluna que não permite null no Oracle).