It's simply
public Color[] teamAColors;
But what about that "6" value that "won't go away"?
BUT YOU'VE STUMBLED ON TO THE "RESET" GOTCHYA IN UNITY!

Just try it with a different variable name...
public Color[] teste;
See?

There it is, working fine. You can set the size dynamically, so long as you never put the size in the code.
Here is the secret:
Unity "holds on to" serialized values in a complicated way.
If you set the size in code even once, Unity "remembers" this even if you subsequently change the code.
There is a way to reset this "inner" value .. look for the famous tiny reset button.
It is attached to the tiny Cog symbol.

The critical rule to remember is this:
NEVER, EVER, HAVE A DEFAULT VALUE IN CODE FOR PUBLIC VARIABLES IN UNITY!!
public float x; // do this
public float x=2f; // generally NEVER DO THIS
While you're at it, here's an incredibly handy trick. Try this ...
[Header("How good is this?")]
public float x;
Here's an even cooler one! try it!
[Range(2f,4f)]
public float x;