For me a "builder pattern" is also something like this with immutable data:
built = empty().configA(a).configB(b). ... .configZ(z)
where each
config?(this : T, k : K) -> T
For me the defining feature of a builder is the (possibility of a) gradual "configuration" (or whatever) of the data structure being "built". A state change is something else in my opinion, but of course, the difference between a "state change" and a "configuration" (which does change state) isn't a clear one, so if for you that is still a builder, that's fine for me too ;).
That seems like the same thing as the example in the original post.