So, being an early adopter some history -
1: Givenergy Modbus (Dewet22) was the original library to interface to the inverter. This was used by GivTCP originally. (Further back was britkats own modbus library but that's irrelevant as that was deprecated once this library came along)
2: Givenergy Modbus 2 (Givenergy) was a fork around Gen 2 release that modified Dewets code above, such that it recognises Gen2 serial numbers. (It used to just fail) At the time Dewet couldn't be contacted or something like that. That was then rolled out into GivTCP around that time so people with Gen2 could use it. (EA & ED Serials) although these were then rolled back into the original Dewet22 library anyway around the same time so was a sort of pointless endeavour in the end once they got in contact with him.
Note: Neither of these 2 libraries support Gen 3 or AIO or Gateways (i.e. FD serials and so on...)
3: The code from 2 above was then modded again when Gen 3 and AIO came along but this time it was done inside GivTCP repository as you've noticed.
It handles CRC check firmware and massages around some of the newer quirks for the AIO & newer/beta firmwares.
4: to compound further, there is a 4th version inside the '-Dev' builds in Britkats Dockerhub repository which now makes the library talk to the EV charger.
As for which one to use, depends what you want it to do. One would assume that option 3 is probably the most all encompassing / safe for most inverters & newer firmwares.
Admittedly it probably wants a merge doing.
CDPUK uses a version of it for their HA integration (Givenergy Local) - can't remember which version exactly they use (perhaps option 2, I see notes about it not working with newer inverters)
Option 4 is probably at your own risk as unless your auditing the code it's ongoing WIP.