補足説明ありがとうございます!

>>407
ボタン.bを生成する時点で変数msgを"puts AAA"という文字列に
展開していたため、ですよね?

button配置は""で解決できましたが
今度は-textvarを使うウィジェット生成をまとめようとして壁にぶつかりました。
>>406, >>407のことから色々考えてevalを使ったら自己解決できました。

pack [entry .e1 -textvar a1] ;# ←この文をすっきりさせたい
pack [entry .e2 -textvar a2] ;# ←この文をすっきりさせたい

proc foo {w var} { pack [eval entry $w -textvar $var] }
foo .e3 a3 ; foo .e4 a4

でも、C言語やPerlをよく使っている身としては、
ポインタを渡せれば良いのになあと、何だかもぞもぞした気分になりました。