MAX_PP_MEMSPELL is a constant in the server code and reflects the number of spell slots the server is prepared to support. It's separate to the question of whether the character currently in use has 8 or 9 active slots.
The issue is that when the client does a LoadSpellSet, it sends across a data packet containing information for 10 spells. But, if the server sends back a SpellUnmem request for the 10th slot, the client crashes out. It seems to me that whoever programmed the client decided to put a hard max of 10 on the packet structure for LoadSpellSet but didn't manage to code it to ignore any requests for spell un-memming in slots that the client doesn't actually handle. If the client receives requests for the 9th slot and that isn't enabled, then it just ignores the request - this is sensible, but sadly not done for the 10th slot
So, in a nutshell, we have to forcibly prevent LoadSpellSet from sending back data out of range of slots 0-8 otherwise the titanium client crashes. Do other versions of the client act differently? I don't know. Perhaps the "correct" solution is to allow configuring of the maximum number of spell slots in the patch file for each client version.
Paul.