Seid ihr euch sicher dass der Compiler das out in irgendeiner Weise beachtet bzw. anders behandelt?
Sieht nämlich nicht so aus.
Soweit ich weiß, tut er das bei verwalteten Typen (Strings, Interfaces, dynamische Arrays) tatsächlich. Dort wird der Inhalt der übergebenen Variablen mit _DynArrayClear o.ä. aufgeräumt.