Lisp 全般ではどうだか知らないけど Scheme の場合は特殊構文といういう言葉はない。
実装上は区別があるから無いわけではないんだけど、
仕様上は機能が特殊構文であるべきかマクロであるべきか明確な記述はなくて、
全部一緒くたに「構文 (syntax)」となってる。
do や let みたいにマクロで実装可能なものであっても処理系が特殊構文として持ってもいい。
let を特殊構文にして lambda をマクロで提供したって仕様には適合する。