Ich denke eher das Verhalten bei localVar1 ist der Fehler.
Richtig, der Compiler "vergisst" an der Stelle den Aufruf von CopyRecord usw., so dass die Werte nicht überschrieben werden.
Bei den beiden anderen Varianten wird der Record nach dem Operator jeweils überschrieben.
Ich glaube auch nicht, dass das Absicht ist.