Hola Martín:
Justamente, solamente cuando usas TASK TYPE es que tenés que definir DESPENSA de forma global. Cuando usas la declaración de tipo TYPE no es necesario definir nada más. Es decir, las dos opciones son las siguientes.
1) Definir una task con una única instancia:
task Despensa is
entry GET(...);
end Despensa
Y luego:
Despensa.GET(...);
2) Definir un tipo de task que luego podes instanciar muchas veces:
task type DESPENSA is
entry GET(...);
end DESPENSA
Despensa : DESPENSA;
OtraDespensa : DESPENSA;
MuchasDespensas : array (0 .. 15) of DESPENSA;
Y luego:
Despensa.GET(...);
OtraDespensa.GET(...);
MuchasDespensas(2).GET(...);
Saludos,
Santiago.