I understand the association with C<$?foo>. But most of the time, when I'm writing a grammar, I'm catching these rules in order to stick them in the parse tree, not to do tests on them later on in the rule. The very essence of rules is hypotheticality, where nothing is permanent until it gets to the end. I don't think we need a special marker that says "these do that, too."
We need the marker to distinguish between hypothetical captures to internal variables:
/ $?foo:=(abc) $?bar:=(def) /
and non-hypothetical captures to external variable:
/ $foo:=(abc) $bar:=(def) /
And since subrules that capture always capture to hypotheticals, we need the same marker there.
Damian