Keeping the previous environment available is only part of a working rollback. Once version 2 writes a new subscriber state or event value, version 1 must still interpret it correctly after traffic moves back. Adding an optional field can be structurally compatible while changing its meaning breaks old behavior.
I would test a small coexistence matrix: each version writes, both versions read, and a workflow started by one version resumes under the other. Retained provisioning events belong in that test too, since they can outlive the rollout window. That gives the expand-and-contract plan a behavioral acceptance check before removing the old representation.