I'd like to fire up the following question as I have found the same problem:
This is what I understand from the documentation:
Graphics.DrawMesh(...) is used to queue up meshes to render that you don't want to have gameObjects for. i.e. it saves you the cost of instantiating many objects if you want many copies of that mesh drawn.
If all of those meshes are to be drawn with essentially the same material but perhaps each one varies by colour or by alpha or something like that, you can use a MaterialPropertyBlock which is essentially some parameters to create a variant of the used Material to apply at render time. So this means you don't have to create a new material for every mesh drawn, you simply create a MaterialPropertyBlock with the modified element eg. the color.
The thing is that no matter how hard I try, every time I try to use material property blocks all the meshes are drawn the same. Apparently using one variant of the MaterialPropertyBlock for the whole lot. I guess what I would like to know is if I am interpreting the documentation correctly and if so is this a bug? And if it is a bug, is it fixed in Unity 3
Documentation for reference:
Jul 18 '10 at 11:24 AM