When an array A has non-zero elements but the expansion of "${A[*]}" is still a null string, it is not treated as such for purposes of ${var:-X} expansion (though $* is treated as null in the same circumstance).
$ A=(''); set -- '' $ echo "<${A[*]:-X}>" "<${*:-X}>" <> <X> $ IFS= $ A=('' ''); set -- '' '' $ echo "<${A[*]:-X}>" "<${*:-X}>" <> <X>