Array with various types

are dynamic material instances that cheap, to where you could use them all over the place? i thought that would cause a lot of overhead compared to material instance constants. doesn’t every material variation add draw calls?