Split the shared costs evenly — accommodation, groceries, the rental car, group dinners — and let everyone pay for their own extras. Log each shared expense as it happens with who paid, and settle once at the end rather than continuously.
The arguments almost never come from the big obvious costs. They come from ambiguity: was that taxi shared? Was the bottle of wine three people drank a group expense? Define the categories on day one and the rest sorts itself out.
Someone pays, someone writes it down. That's the whole system. Trying to settle up in real time creates a stream of small transfers nobody tracks; leaving it entirely to the end means reconstructing a week from memory and bank statements.
Different income levels are the real problem, not arithmetic. The fix is structural: make the expensive things optional and the cheap things communal. One booked group dinner and four self-catered nights lets everyone participate fully without anyone being quietly stretched.