I think you're on the right track here. OnCurve merely collects the properties and methods that all types of curves must adhere to.
In your list you're missing OnArcCurve and OnPolyCurve. Brep edges and trims will eventually also derive from OnCurve.
The way to think about OnCurve is to treat it as the common denominator of all curves. Lines and Circles on the other hand have very well defined shapes which makes intersection algorithms (for example) much easier. Oftentimes, exact mathematical solutions can be computed for cases involving lines and arcs, which is not possible for 'freeform' or 'unpredictable' curves.
But it is very important to realize that OnLine, OnArc, OnCircle, OnEllipse and OnPolyline do not derive from OnCurve. You need to convert these objects into OnLineCurve, OnArcCurve etc. if you want to use them in functions that operate on OnCurves.
This 'split' still exists in the new RhinoCommon SDK, but at least we've managed to get rid of all the IOnLineCurve, IOnArc, IOnNurbsCurve types (phew).