Money makers on the ship are drinks, casino, and shops - they need that income. The costs of staying in port are very high between fees, dock rental and employees who come with that, security, taxes, etc. Many ports don't have enough cruise ship docks to have some come in an stay a few days either.