I can't reproduce the bug with 'greying out the purchase button'.
As for the max banked points, it is hardcoded in the source to match the client and is level dependent.
In the Leadership window, where it says 'Group Points, x of y', the 'of y' bit is determined by the client.
You could alter the source to let you bank more if you wanted. The relevant bit of code is at the top of zone/exp.cpp:
Code:
static uint32 MaxBankedGroupLeadershipPoints(int Level)
{
if(Level < 35)
return 4;
if(Level < 51)
return 6;
return 8;
}