Dann sprechen wir von unterschiedlichen Delphi-Versionen,
...
Das scheint aber nicht mehr zu stimmen, ob es aber garantiert werden kann, dass der Speicher in jedem Fall gelöscht wird?
Das Verhalten ist auch schon in Delphi 7 so (ältere kann ich gerade nicht überprüfen). Ich gehe jetzt mal einfach davon aus, daß es in den zwischen D7 und XE7 liegenden Versionen ebenso ist. Natürlich kann niemand garantieren, daß dieses Verhalten in zukünftigen Versionen wieder anders implementiert wird, aber die Wahrscheinlichkeit ist eher gering. Sollte es wirklich mal soweit sein, wird man dann wohl aktiv werden müssen. Bis dahin sind sämtliche 0-Initialisierungen dynamischer Arrays im eigenen Code überflüssig.
Um auf die Originalfrage zurückzukommen: Himitsu's Vorschlag mit dem erweiterten SetLength ist die schnellste Möglichkeit.