The Cryptonote white paper says:
The upper bound for the overall amount of CryptoNote digital coins is:
MSupply = 2^64 − 1 atomic units. This is a natural restriction based
only on implementation limits, not on intuition such as “N coins ought
to be enough for anybody”.
The actual implementation restriction is that a single output cannot have an amount greater than 2^64 − 1 atomic units (which is 1.84 * 10^31 XMR).
Therefore the restriction they are referring to is about individual outputs and not the total sum of all outputs that can exist on the blockchain.
This is currently an implementation limitation related to Monero's "range proofs" which prove that amounts are not negative by proving they are lower than 2^64. Because Monero units are expressed as positive integers which are subject to modular arithmetic, a very high number can be equivalent to a negative number when added to another Monero amount, which is why this "lower than" check proves the number is not effectively negative.
It's easy for this limit to be increased if necessary in the future (it's extremely unlikely to be necessary).
Note that this answer is specifically related to theoretical limitations. It may be possible that certain Monero wallet implementations also store amounts using a data storage technique that would prevent numbers larger than 2^64 from being stored.