I summarized Stéphane Chazelas' answer:
- ${1:+"$@"}' test if $1 null or unset
- ${1+"$@"}' test if $1 unset
so if use second one with parameter "", that means $1 is null, but it doesn't test whether it is null or not, it just see it have been already setted nevertheless it it empty or not, so it will expand $@, but you use ${1:+"$@"}' with "", it will not expand $@$@ any more.