Actually there is a rule - the only official required currency to be accepted at any business establishment in Jamaica is the Jamaica dollar. A business can base its price on the US$ (or any other currencies if it wants) but the only official currency of Jamaica is the Jamaican $. If they base their prices on the US$, you are not required to pay in US$ - they must accept Jamaican dollars as well. They cannot refuse Jamaican dollars. That is against the law.
If a business accepts other currencies it is done purely as a convenience to the consumer. And they are entitled to charge whatever exchange rate that they wish since it is not the legally accepted currency, the Jamaican dollar. They are even entitled to refuse payment in any currency other than the Jamaican dollar, but most accept US$, some the CA$ and even a few the British Pound.
From a business accounting standpoint, this can be a major hassle and does require additional time for the accountant - which is often paid for by the various exchange rates. As a side note, when a business bases their prices in US$, a high exchange rate (say 99 to 1) would encourage payment in us$. While a lower exchange rate (say 90 to 1) encourages payment in ja$ - and also gives the locals a bit of a break on the cost since they normally only use the ja$. Some might call it the "local discount".
But just as cambio and bank exchange rates vary, you will find the exchange rate at various businesses can range widely. If you go to 5 different cambios and/or banks, you will find 5 different rates. It is capitalism at its roots.
On your next trip, just check the exchange rate at the cambio at the airport before you leave the building (dont exchange money there). Then compare that rate to any of the cambios in Negril. You will be very glad you change your money in Negril and not at the airport....