Just say no, and set boundaries in advance.
Well before the holiday, you should have had a chat, especially with the eldest two, and set your rules.
"Right boys, I'll pay for the flights and accomodation for us all. I'll get the evenings meals, and we can decide between us where we want to go, some cheap nights for pizza, burgers or pasta, and some nicer nights where we get dressed up and spend a bit more on steaks. But if you want loads of drinks, you'll be paying for them yourselves, and if you want to do stuff like party boats or jet ski's you'll be paying for them yourselves too."
As long as you've mentioned in advance, it's easy enough to say 'You can do what you want with your money, but I'm not buying more than one cocktail each tonight'. Even if you haven't it's reasonable to say 'No boys, we had a really expensive meal last night, so it's pizzas and beers tonight'
Even as a young child and teenager, we used to go on lovely holidays abroad and have these kind of boundaries set 'Right, tonight lets have a nice meal, shall we go for a steakhouse or that nice Chinese?' 'Tonight's a cheap one, we'll go to that place down the sea front, but it's pizzas or burgers' 'No, we spent a lot of money on the waterpark yesterday, so we're just having one drink out tonight, once we've all finished we'll head back to the hotel - you can try that fancy milkshake another day'.
Any complaints can easily be met with 'Well I'm definitely not poor, I've paid for all four of us to come to this lovely place, and paid for XYZ. You're welcome to put your hand in your own pocket if you want more, but I won't be'