>quote が外れたオブジェクトは、いつ評価されても文句言えない仕様なんです。
オブジェクトがいつ評価されるのかは、きちんと決まってないと混乱の元になると思う。
(実装する人にとっても、その言語を使う人にとっても。)

>quote を関数ではなく構文糖として、
quoteを関数として実装するのは無理な気が…
quoteが関数だと
'(1 + 2)
↑は
'3
と等価になるんじゃないのかな? (1 + 2)がquoteに渡される前に評価されてしまうことになるから。