ありがとっす何となくわかったかも
変数を参照する時だけ$を付けるBシェルに似た仕様なのかなとも思ったけど
代入の右辺にも左辺にも登場するから混乱していた

つまり、let文の中ではオプション名と普通の変数名が同居する可能性があるから
&が付いた変数名はオプション名として区別されるようになってるのかな
set文はオプション設定専用の文だから、set cpo&vim のように前&は付けなくて良いわけか
ただ、set文にはデフォルト値を表す後ろの&があるから話がややこしい