Existe un error al definir el array, ya que empieza en la posición 1 y en ejecución la primera vez que pasa por:
i y j valen 0 (ya que no se han inicializado); De ahí que te "salte" el error de "Access Voilation"; Además para que salga el mensaje de error en el último IF deberías colocar:
Código Delphi
[-]
if(contador_variable >= 3)
El código final quedaría algo así:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if(contador_variable < 3)
then begin
contador_variable:=contador_variable+1;
Variable:= Edit1.Text;
Valor:= Edit2.Text;
Tabla[i,j]:= Variable;
j:=j+1;
Tabla[i,j]:= Valor;
ListBox1.Items.Add('Var:' + Edit1.Text + '-------Valor:' + Edit2.Text);
end;
if(contador_variable>=3)
then begin
ShowMessage ('No es posible declarar más variables');
end;
Edit1.Text:= '';
Edit2.Text:= '';
end;