example
// gameObjectA and gameObjectB share same mesh and material
var meshA = gameObjectA.GetComponent<MeshRenderer>();
var myMaterialBlockA = new MaterialPropertyBlock();
var length = 6;
var myMatrixColorsA = GetMatrixWithRandomColors(length);
myMaterialBlockA.SetMatrixArray("Colors", myMatrixColorsA);
var meshB = gameObjectB.GetComponent<MeshRenderer>();
var myMaterialBlockB = new MaterialPropertyBlock();
length = 2;
var myMatrixColorsB = GetMatrixWithRandomColors(length);
myMaterialBlockB.SetMatrixArray("Colors", myMatrixColorsB);
meshB.SetPropertyBlock(myMaterialBlockB);
meshB will also get 6 colors,
2 from myMaterialBlockB, and 4 from myMaterialBlockA