He clearly doesn't understand the code, then. MAX_MONEY is only used as a sanity check to prevent "impossible" transactions and integer overflows (any transaction sending more than MAX_MONEY is invalid, regardless of all other factors). The actual limit is enforced in this function in main.cpp:
int64 static GetBlockValue(int nHeight, int64 nFees)
{
int64 nSubsidy = 50 * COIN;
// Subsidy is cut in half every 210000 blocks, which will occur approximately every 4 years
nSubsidy >>= (nHeight / 210000);
return nSubsidy + nFees;
}
The result of this code is the first 210,000 blocks are worth
BTC50 each, the next 210,000 blocks are worth
BTC25 each, and so on (any block created with a greater value (eg, by modified or faulty mining software) will be rejected as invalid by all other nodes). This is a convergent infinite series with a limit of
BTC21,000,000. However, due to rounding errors, the series is actually finite, and reaches a limit of
BTC20,999,999.97690000 after 6,930,000 blocks.