I haven't looked at how it works precisely in recent code, but I can say
that offsetting an ellipse does not result in an ellipse (Ask me off line if you want to know why: roughly, only curves whose derivative is a perfect square can be offset), so practically you'll need to use a general purpose offsetting algorithm such as the one in livarot or the incomplete one in lib2geom. Circles can be exactly offset.
The lib2geom one is more accurate at generating offset curves directly
from bezier to bezier, but nobody finished writing the caustic removal code. This would be a good project for someone interested in getting into computational geometry/geometric design and I'm happy to mentor them.
The livarot version works by converting to a polygon which has a mostly
closed form for offsetting, but it does not adapt precision to the curve in an effective way. I think this would be harder to fix properly.
Oh. At first glance this looked like a matter of simply adding some more nodes to the new shape so that it becomes round again. But after some quick googling I have to admit that I don't know nothing about it. This sounds like a really interesting topic. If I only had more time...
Regards, Markus