When suggesting the term SPREAD, @rgchris gave this example for REDUCE behavior, which hadn't occurred to me previously:
>> reduce [spread [a b c] [a b c]]
== [a b c [a b c]]
Nothing about the design makes this happen automatically. REDUCE has historically errored on isotopes. So code has to be added to override that.
I'm guessing most people would be in favor of having the splicing behavior. Arguments that say that there should be a 1:1 correspondence between expressions and values in a REDUCE are already pretty much out the window, since VOID elements vanish (including conditionals that don't take any branch).
DELIMIT Would Presumably Want It Too
I've complained in the past that the often random-seeming treatments of blocks in Rebol2 functions like REJOIN lead to problems--and that it would be better if people had to be explicit about their intent. This offers the ability to "inherit" whatever the enclosing delimiting strategy is, and fold into the existing operation (technically more efficient):
>> block: ["c" "d"]
>> spaced ["a" "b" block]
** Error: BLOCK! not handled by DELIMIT, use SPREAD or desired string conversion
>> spaced ["a" "b" spread block]
== "a b c d"
>> spaced ["a" "b" unspaced block] ; if you wanted another interpretation
== "a b cd"
I believe I prefer this over having some default way that blocks behave inside string conversions. The odds of guessing right are low enough that it's better to have people be explicit.
So...presuming there's no objections....there's an agenda item to fuse together the stackless logic that performs a REDUCE so that it's the same code running in DELIMIT, so I'd probably go ahead and do that and make these things work.
UPDATE circa Oct 2022: This has been done, so you can now use this feature.