I can see your frustration, but already your nitpicking shows the problem. A curve doesn’t have a unique “normal direction”. So you cannot simply return a single direction for a curve. Since the current implementation returns the type of object, the point lies on, you are required to check on your own and act accordingly.
A possible solution is to limit the results to points on faces only. Either by option or by overload. Then your default average is a good first assumption for most BReps but you’ll have problems with non-manifolds.
The only real advantage of McNeel coding that for you is that they could cache intermediate results and not calculate the normals for the adjacent faces again.
Well there you go. Normals of a BRep are facing “out”, because they are required to do so by definition of a BRep.
There’s a nice dicussion over at the Maxwell Render forums about how to best render an ice cube in a glass of water or a bubble of air in a liquid with various layers of material transitions facing this and that way. Once you define the atmosphere to be the outside medium, “outside” can qickly become “inside” and normals are expected to point inward.