I don’t think this is correct. Consider what you see from using sh -c -- 'var="a " && printf"%s\n""${var}"-z'
If "${var}"-z resulted in two arguments instead of one, I’d see “a” and “-z” on different lines, but I see them on the same line, which means they are treated as a single argument.
First one has the pitfall of a space at the end of the variable still causing it to fail.
Would a space at the end of the variable be ignored in the second one, though?
It would still be considered a single variable because the entire string is quoted. The first scenario would have split it into 2 variables.
I don’t think this is correct. Consider what you see from using
sh -c -- 'var="a " && printf "%s\n" "${var}"-z'
If
"${var}"-z
resulted in two arguments instead of one, I’d see “a” and “-z” on different lines, but I see them on the same line, which means they are treated as a single argument.