Global data is bad; only the memoization code needs to access the cache; why expose the cache more broadly than that? More explicitly, one problem with overexposure is namespace collisions.
I do agree that namespace collision is certainly an issue, but it's traditionally resolved by mild name mangling (again, see Python).
In my opinion, the advantages of a less clever (read easily understood) public implementation outweigh the disadvantages.