Unlike Robert Rothenberg, I can see the value in the module's use of a tied hash interface: namely, you can interpolate a call in a string. (Maybe Robert should have read the "SEE ALSO" section.)
I don't know why we need a module that is nothing but a specialization of Interpolate.pm though.
However, my real beef is with the name. Both "Comma" and its new name "Tie::Comma" are useless: without a look at the documentation I couldn't even begin to guess what this module is supposed to be for.
I'm all for coming up with new programming idioms, but I fail to see the use of this module. A tied hash is being used instead of a simple function, so there is a lot of object-oriented overhead behind the scenes that doesn't need to be there, especially when there is only one global instance of the comma object.
Looking at the source, locale-specific formatting is automatic. There's no option to customize it, so if you're in one locale but want to produce formats in another locale, then you're out of luck.
However, the name 'Comma' is inappropriate for locales that don't group digits with commas.