Why is reduce with concatenation type unstable?

But reduce is not splatting. What you are doing is equivalent to

1, vcat(1, 2), vcat(vcat(1, 2), 3) etc…

And this has nothing to do with type stability. It’s just how it must behave by the definition.