I have recently bumped into the concept of palette texturing, where all models share the same texture (and in theory, the same material) with the models UV placed on the desired colour of the palette.
As said, this in theory would reduce the amount of resources needed as only one texture and material is used by all models.
That sounds a bit like the method used for using a texture atlas.
Where you combine or join lots of models, put a material on them, and use a texture atlas.
Palette texturing is the best option if you want to have color variation and a good performance. The only con I can think of, is that if you want to change some colors, you need to import your texture atlas to Photoshop or GIMP, make the changes then export the texture back to Unity. You will probably have to repeat these steps a couple of times to get the colors you want.