It is illegal for any Jamaican business to "insist on charging in US dollars." They MUST accept Jamaican dollars. As a convenience, they can accept other currencies, but they can in no way insist on charging in US dollars.
The reason some businesses use US$ prices is that the US$ is currently the most stable currency. As Mangogirl pointed out, if they had their prices in CND$ they would have to change it daily (probably a slight exaggeration, but it does make the point). Same is true for the Jamaican dollar. The JA$ fluctuates to the point that prices would need to be changed too often for most businesses. I am sure that frequent visitors have seen menus in the smaller places that have chalk board prices or printed menus with the prices taped over with the new prices. Their menus are often printed with no prices and the prices are just "taped" in....