Something really cool about this approach is the marching squares algorithm is highly parallelizable which would make this a good candidate for GPU acceleration provided that there is enough memory.
Edit: my thesis advisor was the first to prove that there were exactly 15 distinct configurations of voxels in MC, which gives you the ability to perform constant time lookup for the (configuration, rotation) for vertices on the edge of any particular voxel. http://graphics.stanford.edu/courses/cs164-10-spring/Handout...
The marching cubes are not just evaluated to find the surface where Voxel(xyz)=value
But rather F(Voxel(xyz))=value
What gets interesting is that both pre-interpolated, and post-interpolated versions are interesting.