I have thought about vertex painting a bit and it is indeed complicated if you want smooth blending between materials. Hard transitions on triangle edges is simpler but I really don’t like how it looks.
The only system I could think of (for now) with smooth blending is using the vertex color attribute to store a material weight and each index of the color (r,g,b,a) is a locked material for the entire terrain (i.e.: r is always grass, g always rock, etc.). The smooth transition would be handled via the automatic interpolation between the weights into the fragment shader. But this would mean that only a limited amount of materials can be supported due to storage and performance and that every material needs to be present for every voxel, even when its weight is zero.
I have it on the optional features list, but I don’t know yet if I will get to it.