This modifier has the following requirements:
As a particle passes through the modifier, the modifier changes an internal color value held by the particle; the rate of change depends on the settings in the modifier - the higher the values, the more rapid the change.
This value is then used by the xpSpriteShaderControl, at render time, to alter the color returned by the material channel.
If you cache a scene with an xpSprite object and a Sprite shader, you will find that you can render any frame to the viewport and it will render correctly.
However, if you render a frame to the picture viewer, it will appear that the sprite shader has no effect.
This is inherent in the way modifiers work in X-Particles; once cached, internal modifier values are not updated if you render a single frame to the picture viewer partway through the animation.
There are two possible solutions to this.
Firstly, to render a frame to the picture viewer in this case, you can render all preceding frames as well, so the modifier can update the required values in the particle.
If you are using internal caching, this is the only available solution, but it may be slow if you need to render many frames which you don't need.
If you are using external caching, there is a better solution: in the Cache object, disable the Skip Render Pre-Roll parameter.
This will force X-Particles to run through all frames before the one you want to render, thereby updating the modifier values, but it will not render those frames.
This can be much faster than rendering all the preceding frames.