Засега те са синоними.
VARCHAR е запазен от Oracle за да поддържа разграничение между NULL и празен низ в бъдеще, като ANSI стандартът предписва.
VARCHAR2 не прави разлика между NULL и празен низ и никога няма да го направи.
Ако разчитате на празен низ и NULL тъй като е едно и също нещо, трябва да използвате VARCHAR2 .