Oracle es muy muy muy viejo.
En los 80's cuando se desarrolló (y antes de que existieran estándares) pensaron que era una buena idea, y dieron paso a Oracle almacena sus valores, realmente lo fue.
Así es como Oracle almacena datos (tomados de la documentación ):

No se almacena ningún tipo de datos dentro de los datos, solo la longitud de los datos y los datos mismos.
Si NULL ocurre entre dos columnas con valores, se almacena como un solo byte, lo que significa que la columna tiene una longitud 0 (en realidad, 0xFF ). NULL final Los correos electrónicos no se almacenan en absoluto.
Entonces, para almacenar el valor 'test' , Oracle necesita almacenar 5 bytes:04 74 65 73 74 .
Sin embargo, para almacenar tanto una cadena vacía como un NULL , Oracle solo necesita establecer la longitud de los datos en 0 .
Muy inteligente si sus datos se almacenarán en 20 Mb discos duros que cuestan 5,000$ cada uno.
Más tarde, cuando aparecieron los estándares, ya no era una buena idea, pero en ese momento ya había montones, montones de código que se basaban en NULL y '' siendo lo mismo.
Haciendo VARCHAR hacer tal distinción romperá toneladas de código.
Para solucionarlo, cambiaron el nombre de VARCHAR a VARCHAR2 (que no forma parte de ningún estándar), declaró que VARCHAR2 nunca distinguir entre un NULL y una cadena vacía e instó a todos a usar este tipo de datos en su lugar.
Ahora probablemente estén esperando a la última persona que usó un VARCHAR en Oracle base de datos para morir.