No estoy seguro, pero creo que no puedes tener arreglos multidimensionales como parámetros abiertos. A lo sumo, puedes hacer una combinación de parámetros abiertos y arreglos dinámicos:
Código Delphi
[-]
type
TDynamicStringArray = array of String;
procedure Foo(MultiArray: array of TDynamicStringArray);
begin
end;
Llamada:
Código Delphi
[-]
var
A, B: TDynamicStringArray;
begin
SetLength(A, 2);
A[0] := 'Hola'; A[1] := 'mundo';
SetLength(B, 4);
B[0] := 'ClubDelphi';
B[1] := 'es';
B[2] := 'el';
B[3] := 'mejor';
Foo([A, B]);
end;
// Saludos