Sono riuscito a risolvere il problema in questo modo, la mia intenzione è però non fare uso della funzione locale. Vediamo che posso fare grazie alle tue indicazioni, ciao

codice:
Procedure EliminaMax(var lis1: puntatore; max: integer);
var
  paux: puntatore; //globale ad EliminaMax

(*TrovaMax è una funzione locale ad EliminaMax*)
Function TrovaMax(lis1: puntatore; max: integer):integer;
begin
if lis1<>NIL then
  begin
  if lis1^.info > max then max:=lis1^.info;
max:=TrovaMax(lis1^.next, max);
  end;
  TrovaMax:=Max;
end;{Fine della funzione TrovaMax}

(*Da qui in poi implementiamo EliminaMax*)
begin
if lis1<>NIL then
  if lis1^.info=TrovaMax(lis1,max) then
     begin
     paux:=lis1;
     lis1:=lis1^.next;
     dispose(paux);
     end
   else
     EliminaMax(lis1^.next,TrovaMax(lis1,max));
end;