It's by design. The string is expanded when it's assigned to the Caption property, and by that time all the parts are already concatenated. You'd have to do something like this to explicitly expand the relevant parts:
this.Caption = Game.ExpandString("/ITEM0002/Arc") + "Exp:" + .... ;