As I see ${1+"$@"} can be simplified to "$@". The only difference is that in the first case only $1 will be checked whether it is set.
Yes, that's my idea as well. If there's at least one argument,
$1 is set and
${1+"$@"} first expands to
"$@" which then expands to
$1 $2 $3 .... If
$1 isn't set
${1+"$@"} expands to nothing. In either case, it's the same as
"$@". There might be some shell somewhere that makes a difference, but according my reading of a manual found on the Interwebs, even in the Bourne Shell on System 7 both
${1+"$@"} and
"$@" are identical. The POSIX standard also says that in the absence of positional parameters,
"$@" expands to nothing.
I'm not really knowledgeable in the c shell, so I can't explain now the gubbin designed for sh and csh at the same time.
I'd be surprised if the gubbin actually worked on csh. AFAIK, it doesn't do
${foo+bar} style parameter expansion (but I don't have a csh laying around to try it on).
Perhaps the ${1+"$@"} is just a piece of cargo cult. Noone is really sure if it's going to break on some system somewhere, and just leaves it as is, instead of replacing it with "$@". It's not that there's a huge savings.