Dynamic material instances vs material parameter collection

I was under impression that one must create dynamic material instance if parameter values of that material needs to be changed during game play. However as per this tutorial, you can just use material parameter collection and change material parameter values during game play! No need for messing with Blueprint to create dynamic material , store it in variable to change it later etc.

What are the advantages and disadvantages of both approaches? My scenario doesn’t require changing parameters shared by many material but the later approach still looks much simpler.

wanna know too

Sometimes it’s better to use instances of a material, imagine you have a metal material and in your blueprint you have 3 differents spheres. Those spheres are metallic, but they all have a different color.
If you use a parameter collection for the color, you will not be able to change the color individually on each sphere.

But if you create dynamic instances and set their vector parameters, each instance can be different color

The sequencer may use Material Parameter Collections for animating the materials.