What's the most logical and efficient way to handle color variations for a single model?

Let’s say I have a set of building models. They all use a single material that they share that pulls UVs from a texture atlas palette in order to batch them all together.

This is well and good, but what happens if I want Building_A to have a color variation, without affecting other models?

Do I use a second material that pulls from a different texture atlas? Do I use a second model with different UVs and keep the single material? Do I use a different UV channel?

I would advice on using the same material. Does the building texture atlas contain the texture for multiple buildings? in that case you could simply use different UVs. If not then you could perhaps have a shader that varies the color based on some input such as position or vertex color.