There's a long list of properties that you want your algorithm to have:
- Meshes should be watertight
- Meshes should be manifold
- There should be no self-intersections
- Sharp features (edges and corners) should be reproduced accurately, rather than blurred or bevelled
- Thin features should be preserved (which makes it tricky to sample on a regular grid!)
- The mesh should be adaptive, i.e. having fewer triangles in flat areas
It's relatively easy to get ~3 of these properties, and (last time I checked) nigh impossible to get 5 or 6 in the general case.
If you'd like to read more, Doug Moen has a comprehensive overview of the literature: https://github.com/curv3d/curv/blob/master/ideas/v-rep/To_Me...
I've also written up a 2D study of Marching Cubes (Squares) vs Dual Contouring: https://www.mattkeeter.com/projects/contours/
And a deep dive into the math that lets you precisely position vertexes in dual contouring: https://www.mattkeeter.com/projects/qef