A 'visibility' parameter that when set to false will leave the object uncut would make life much easier.
Regularly we use voids to create openings in objects. If we do not need a particular void for a family instance we have to set up parameters to make sure the void does not intersect with the object.
Also we use (nested) face based families that create holes in the host. If this object is optional and controlled by a visibility parameter and hide it you are left with a hole in the object of the host.