COMPOSE was a sort of poster child for the use of SPLICE!, so that you could mix and match splice cases with non-splicing ones... carried by the values, with no concern for /ONLY:
>> block: [a b c]
>> compose [(block) d e (spread block)]
== [[a b c] d e a b c]
But when suggesting the more-obviously-a-verb word SPREAD for the operation, @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]]
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).
So I implemented this! (Circa October 2022)
SPLICE! Handling Is In DELIMIT & Friends Now, 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.