SetUpA4.h is awesome. It lets you write code resources using global data with no fuss, no muss in code resources, across Toolbox callbacks and trap patches.
__GetA4() indeed moves the address of a long in code space to A1 ... but that is the address where RememberA4() will stick A4! Think of that function name as meaning "get the place where A4 is/will be stored and stick it into A1".
Remember to include SetUpA4.h separately in each file where it is needed, and to call RememberA4() once separately from each such file at a time when A4 is known to be good.
RememberA4() is for drivers (the THINK C driver glue initializes A4 for you) and RememberA0() is for other types of code resources (on entry, A0 points to the code resource). You use SetUpA4() and RestoreA4() either way, once you've noted either A0 or A4 appropriately for later recall. This is explained in the THINK C manual (look up "RememberA0" in the index).
And yes, looks like you found a typo in that assembly code fragment.