It is for flexibility purposes - so you don’t have to create the same sprite multiple times, you just reuse the same sprite texture and re-color it to however many colors you like. I personally use a custom “Color” that accepts integers for r,g,b,a values of 0,0,0,0 to 255,255,255,100 respectively. We simply load up a “white” sprite and color it to whatever we wish at runtime.
Some other awesome things you can do is create a “color” interpolator, where you can linearly interpolate from one color to another at runtime for awesome effects, very handy for complex particle systems.
For reference purposes, as far as the GPU is concerned, it is an extremely fast operation, using glDrawElements and a glColorPointer I notice a 2FPS difference on a 15,000 sprite test (66FPS colors off) vs (64FPS colors on). That 2FPS could also be the fact that an extra buffer needs to be created for each sprite, so it could very well be a CPU bottleneck in which case no difference in render speed.
PS - here are some images - is this what you’re describing? thats 15,000 sprites, one version colors turned off, the other colors turned on. 69 FPS colors off, 68 FPS colors on. Colors chosen randomly.