Zbrush booleans don’t produce meshes with “defects”, though the geometry may not be suitable for some purposes. If you look close enough at the geometry (turning on dynamic subdivision can help you see the geometry when smoothed, which may reveal things not readily apparent otherwise), you’ll see that every polygon is either a tri or a quad–even though some may be too small to see easily. Ngons cannot exist in Zbrush ever, so if there appears to be a polygon with more than 4 verts, you need to look closer.
For instance, the edges that appear darker in your original illustration? I guarantee there are actually very slender polygons there that you probably cant see unless the mesh were smoothed.
The boolean algorithm doesn’t always make the same choices a human might make when deciding how to join vertices, but that is common to boolean operations in many programs. It’s similar to decimated geometry in this sense, but Zbrush only divides the geometry at the joining polygons, leaving the rest of the object untouched.
If you want your boolean result to be smoothed, make sure it is smoothed prior to generating the Boolean mesh either by subdividing the subject meshes sufficiently, or switching on Dynamic subdivision and enabling DSDiv. This creates a smoothed object and limits the “bad” geometry to a very small area at the intersection of the shapes.
This geometry, like decimated geometry, is fine for printing, but you cannot sculpt cleanly over it. If you need to further work on the boolean mesh, you would first need to remesh it using any of the various methods for doing so.
There is no automated topology generation feature in Zbrush or any other program, that produces geometry as clean and efficient as something modeled from scratch by a human. Booleans lend themselves best to a mid to high poly workflow where you’ll be remeshing frequently, and aren’t overly concerned with geometry at the vertex level.