This is a tricky one. Some years ago I attempted the same thing without much success. The problem is that you are fighting the principles of Last Takes Precedence.
When you set the background rainbow that state is "last", if you then set another state (without removing the old one by lowering the background fader) that becomes "last" and remains in control as long as the fader is up. When you lower the new states fader (and as long as Release On Lower is on for that playback - this is the default) it releases that state and the background state becomes the "last" (unreleased) state.
This rule applies to chases as well so, as each step executes, it sets a fixture to white and it remains white until the chase fader is lowered and the all steps in it are released. This means that the fixtures turn white and stay that way until they are all white. Normally each step in a chase (e.g. a red/white one) each step sets the new fixture to white and returns the previous (or all other) fixtures to red. But you can't do this because you want the colour from the old state and you don't know what that might be.
Your issue then is how to release previous steps in the chase when the next step is executed.
Things you can try...
You can release things from a step, see Cue Settings -> Cue Macros in the manual https://www.zero88.com/manuals/zeros/cues-playbacks/cue-settings/cue-macros but I think this only works for playbacks not steps in them. Perhaps you could make a chase that triggers a different playback in each step?
You could modify a Sparkle effect. You can only do this on an FLX so you'd have to set it up on Phantom ZerOS and then try running it on FLX S. See the manual at https://www.zero88.com/manuals/zeros/effects/waveforms. This is probably your best bet - unless someone else has a good idea.
I'll be watching this thread as it's something I'd like to achieve but no longer have the will or time to spend on it.