Nun ja, Programmadressen (bzw. Adressen überhaupt) werden meist im Init-Vorgang des Aufrufers geladen.
D.h., du kannst z.B. einem Pointer per %Addr() auch als INZ(%ADDR(Irgendwas)) zuweisen.
Das hat aber mit ACTGRP's nichts zu tun, denn dies wird erst beim tatsächlichen Aufrufen bzw. Aktivieren des Programmes initialisiert.
Ein CALL 'PGMX' ist insofern statisch, da die Adresse von PGMX bereits beim Laden des Programmes ermittelt wird.
Beim CALL VARPGM wird intern ein Systempointer gefüllt, der erst beim 1. Call mit der Adresse gefüllt wird. Jeder weitere Call verwendet dann immer das selbe Objekt.
Die Adresse bekommt man erst weg, wenn man einen CALL VARPGM mit einem anderen Programm durchführt, wo dann der interne Pointer neu initialisiert wird.

Das ist beim CMD-CALL (CLP, Kommandozeile, QCMDEXC, ...) eben anders, da wird der Aufruf-Pointer immer neu initialisiert.