If you ever get the chance to visit Venice - a city which is relatively well designed for tourists (you walk in a one way loop) - they're not struggling for customers. On a hot day even in spring it's absolutely heaving and full of places to rip you off. Also plenty of places to eat reasonably, I should add.
Most tourists are not coming by cruise. They're Italians (train to Rome is cheap and takes three hours), Europeans (dirt cheap flights) and other airborne visitors. Since it's easy to get to, lots of people go to Rome and then do a day or a night in Venice.
Santorini is tiny. It's set up as a luxury island for couples (and it's beautiful, so you see why). I guess cruising there is cheaper than ferry and hotel.
Mallorca is somewhere in the middle. Relatively cheap to fly there, cheap to stay and cheap to eat. But again, not designed for a thousand person instantaneous load who thunder through, buy trinkets and leave.
Remember you get a bed, breakfast and dinner onboard so why waste money on land if you only have say six hours to visit? (unless the ship docks overnight)