A resposta depende se você está falando sobre uma coluna em uma tabela de banco de dados ou uma variável em um programa PL/SQL.
Coluna do banco de dados
A quantidade de armazenamento usada é proporcional ao tamanho dos dados armazenados.
variável PL/SQL
Se a variável for declarada com um tamanho de 1 a 4000 (11g+) / 1999 (10g ou anterior), a memória será alocada para o comprimento máximo (ou seja, VARCHAR2(100) exigirá pelo menos 100 bytes de memória).
Se a variável for declarada com tamanho 4001 (11g+) / 2000 (10g ou anterior) ou maior, a memória será alocada de acordo com o tamanho dos dados armazenados. (uma questão secundária interessante seria, se o valor da variável for alterado, como a memória é redimensionada - ela realoca outro buffer com o novo tamanho?)
Referência para 10g:tipos de dados PL/SQL
Variáveis VARCHAR2 pequenas são otimizadas para desempenho e as maiores são otimizadas para uso eficiente da memória. O ponto de corte é de 2.000 bytes. Para um VARCHAR2 com 2.000 bytes ou mais, o PL/SQL aloca dinamicamente apenas memória suficiente para manter o valor real. Para uma variável VARCHAR2 menor que 2.000 bytes, o PL/SQL pré-aloca o comprimento total declarado da variável. Por exemplo, se você atribuir o mesmo valor de 500 bytes a uma variável VARCHAR2(2000 BYTE) e a uma variável VARCHAR2(1999 BYTE), a primeira ocupará 500 bytes e a segunda, 1999 bytes.
Referência para 11g:evitando sobrecarga de memória no código PL/SQL
Especifique um tamanho mais de 4000 caracteres para a variável VARCHAR2; O PL/SQL espera até que você atribua a variável e, em seguida, aloca apenas o armazenamento necessário