Alan,
Agreed, it probably doesn't matter where the start point is within a closed pline in terms of how the user would interface with the object.
What I was trying to say in my last post, albeit poorly, was it may matter how you might attempt to deal the issue codewise per your last example. If typically the start point cannot be a collinear point, then your code should work without alteration. If otherwise, I think the code would have to look at the point before the first point and the point after in order to determine whether the first point should be removed since the firstderiv method doesn't look fowards and backwards.
Stepping back, I'm often reminded of Doug Broad's argument regarding the law of diminshing returns as it applies to code. Your code works well. Perfect isn't required, only desireable.
BTW, I've worked on a facilities managment project where the integrity of existing plines was paramount because they are linked to a database. So explode, modify lines, and join would not work since the original pline handle would be lost.
Regards