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.
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.