Primitives like cubes, spheres, cylinders, cones (visual and collision ones)

They help in various ways from very fast level prototypation and achieve some shapes hard or not efficient to do with voxels.If used properly they may also help optimize the scene.

Blockers or the collision only ones
They totally help optimize collision as you may use a big primitive in place of many small and complex meshes.
They should be procedurally generated to fit any kind of size and shape requirement.

Visual Ones
Visible ones could be eventually choosen from a preset list of sizes if making them procedurally may represent a problem with some rendering technique or even just for for optimization purpose (e.g. instancing).
Differently to any other mesh they should share the same material assets of voxel mesh and then also offer an api to change this material at runtime.
Their texture coordinates could be precalculated or even procedurally calculated in world space.
Meshes may come in hard edges and/or beveled ones to fit more with the voxel mesh look.
They should have their own specific place in ui to not pollute the mesh list and potentially have their own programming class with specific methods.

Future Development
Their flexible sizing especially if procedural may be leveraged to be used in composition of meshes that could be further improved baking the composition as a single mesh.
This is indeed supported in second life if I remember well.