I've updated the vtkClipClosedSurface class to make it create a watertight output. That is, every edge in the output polyhedron is shared by exactly two faces. In comparison, my original version of this class aimed for robust creation of a surface that looked watertight.
The main difference is in the details of how the data is clipped. When a polyhedron is clipped, each polygon edge at the clip plane is cut twice — once per polygon. Each time the edge is clipped, a new vertex is created. So if an edge is clipped twice, it is necessary to merge the two created vertices so that only one vertex appears in the final data set. Originally, I used an Octree-based point locator, which automatically merged points that were coincident or very close. This was a "sloppy" approach. It had the benefit that if the original polygon edges didn't quite match up, then at least an output could still be robustly created. However, a sloppy approach such as this can alter the topology of fine details in the polyhedron's structure. So my new code uses connectivity information, rather than physical location, to determine when newly-created vertices should be merged.
What does this mean, overall? The new version is less tolerant of bad inputs, i.e. it requires the input to have correct topology. But, if given a topologically correct input, it can provide a better guarantee of producing a topologically correct output.