In general when a Boolean operation does not give you the result you want, it is because one or more of the objects you think are closed, are in fact open. As Rhino decides what to trim away and what to keep from the surface normals, open objects can be unpredictable. In this case the object on layer CL4 has its normals facing inwards. On top of that it is a bad (invalid) object.
If you explode that object, and run _SelBadObjects, you will find the bad surface. You can untrim it, saving the border, and then re-trim it to fix. But, there are a bunch of other surfaces that once exploded and with their edges rebuilt do not match their neighbors.
You will also need to fix or re-make those in order to get a good, closed object to subtract from the ellipsoid.