timer 1 5 .echo -q $!zzz( aaa )

of course since aaa is a literal its gonna be the same in this example, however

//set %aaa 1
//timer 1 5 .echo -q $!zzz(%aaa)
//set %aaa 2
well produuce a 5 second delay and then .echo -q $zzz(%aaa) being $zzz(2)

verses

//set %aaa 1
//timer 1 5 .echo -q $!zzz( %aaa )
//set %aaa 2
well produce a 5 second delay and then .echo -q $zzz( 1 )

This is becuase when the %aaa is stuck up hard against the $!zzz aka unevaluated $zzz, it simply becomes part of the unevaluated identifier

For your info
There well of course come times when you cant avoid having a value get evaluated, since it must have a space at the front
such as
//set %value 1
//timer 100 1 echo -a at $!time the special value now is %value
//set %value 2
*** this well not work as %value well be evaluated as 1 when the timer is created

//set %value 1
//timer 100 1 echo -a at $!time the special value now is % $+ value also $+(%,value) or $!(%value)
//set %value 2
*** this works