From Bash Reference Manual:
The shell treats several parameters specially. These parameters may
only be referenced; assignment to them is not allowed.
(...)
@
Expands to the positional parameters, starting from one. When the
expansion occurs within double quotes, each parameter expands to a
separate word. That is, "$@" is equivalent to "$1" "$2" …. If the
double-quoted expansion occurs within a word, the expansion of the
first parameter is joined with the beginning part of the original
word, and the expansion of the last parameter is joined with the last
part of the original word. When there are no positional parameters,
"$@" and $@ expand to nothing (i.e., they are removed).
(...)
You can use @ (at-sign) in parameter for any program without escaping.
If you have to pass something like this $@
in parameter - you have to escape only $
(dollar sign).