Das hängt damit zusammen, dass Klasseninstanzen auf dem Heap landen und somit automatisch mit 0 initialisiert sind/werden.
Temporäre statische Variablen hingegen landen im Stack, wo der Wert variabel ist.
Delphi-Quellcode:
procedure writeInternalVariable();
var
x:
Array[0..7]
of Integer;
begin
Writeln(x[0]);
// schreibt "1234" effektiv
end;
begin
asm
mov DWORD [esp-$24], 1234
end;
writeInternalVariable;
readln;
end.