Das ist kein Fehler, sondern ist typisch für die Verwendung von with.
Mit XE2 hat TRect diverse Erweiterungen bekommen, unter anderem Width und Height als Eigenschaften. Deshalb bezieht sich das eben nicht mehr auf das Formular außen, sondern auf das Rechteck.
In der VirtualTreeView war ähnlicher Code, nur mit Offset (das es nun auch in TRect gibt). Ohne with hätte sich auch der problemlos unter XE2 einfach wieder kompilieren lassen.
Deshalb verwende ich selbst with nie. Es gibt damit immer nur unnötige Probleme, schwer zu findende Fehler und debuggen ist damit auch nicht sinnvoll möglich (weil man bei Auswertungen mit Strg + F7 usw. immer erst manuell den Inhalt des with dazuschreiben muss und andere Sachen gleich gar nicht gehen). Refactoring funktioniert auch nicht wirklich. Und übersichtlich ist das ganze auch nicht, weil man ständig rätseln muss worauf sich denn nun was bezieht. Eben weil die dann viel kürzeren Bezeichner oft nicht eindeutig sind. Wie du ja hier gerade selbst feststellen musstest.
Deshalb verstehe ich immer nicht weshalb man sich das alles zumutet nur um ein paar Zeichen zu tippen zu sparen...