Na razie są synonimami.
VARCHAR jest zarezerwowane przez Oracle do obsługi rozróżnienia między NULL i pusty ciąg w przyszłości, jako ANSI zaleca norma.
VARCHAR2 nie rozróżnia NULL i pusty ciąg i nigdy nie będzie.
Jeśli polegasz na pustym ciągu i NULL będąc tym samym, powinieneś użyć VARCHAR2 .