$@ に限らず、$# $! $? などの「特殊」パラメータはすべて unsetできない。
unsetできるのはシェル変数だけ。
それとは別に、「位置」パラーメータは未設定の場合もあり得る。

そして、$@は、「位置」パラーメータではなく
「特殊(←ここ重要)」パラメータであるということ。

set -u はそもそもシェル変数や「位置」パラーメータのように、
未設定である場合があり得るパラメータに対してチェックするためのもの。
その set -u が、「特殊」パラメータである $@ に反応してしまうのはおかしい。