I was wondering if it'd be possible to enhance LibUnitChange so that the events it fires include the old value.

I would just change the version I have, but it would seem optimal to have it changed in the central version.

From what I can tell it just needs this code tweak:
if current[unitspec] ~= unitid then
    registered[unitspec](unitid, current[unitspec])
    current[unitspec] = unitid
I expect it'd be backwards compatible as the extra param would just be ignored by anyone not interested in it.

For me I believe it'd help speed up detecting if a player has joined, left or changed groupid in the raid.

Also would it be worth having an explicit event that libunitchange is done with events?
Or can I just rely on a low priority handler on Event.Unit.Remove being an indication libunitchange should be done

This is an issue when units are moving group ID, as multiple group changes occur and I need to buffer them up, so that I don't throw a unit away when it's just moved group id (and avoid rebuilding everything)