What might cause contribution amounts to multiply by 100 instead of recording values with a decimal place
I managed to solve this.

I looked at what adding a contribution touches in the database. I ruled out differences in the settings table, but then when I looked at civicrm_currency I found that in this database, some characters were not present, even though the encoding would support them. so for instance the civicrm_currency record (6,'INR','₨','356','Indian Rupee') in another database was (6,'INR','','356','Indian Rupee') in this one. 

It's not quite clicking with me why the U.S. dollar amounts were being translated -- that record was not different at all. But swapping out the currency table with one from a different site resolved my issue.