Port charges and taxes are similar. They are monies paid by the cruise line to the government. Thus it represents real money out of the cruise line's pocket. That is why a "free" cruise does not include port charges and taxes. In all honesty, two more or less people on a ship is not going to make any difference. The ship will not set out any more or less food. The ship will not change the number of staff. It will have no effect on the amount of fuel used. It is like getting a product "free" except you have to pay for shipping.
To stamp out a CD or DVD with a program on it or music on it cost the company so little that a few here or there make no difference. But paying for shipping does. So, you get the product for free (which is only a few cents less than what it costs the company) but you have to pay for the shipping.
The reason the cruise lines are reducing ports is to save fuel. It takes less fuel to go 800 miles in two days than it does to go 800 miles in one day. In addition, as a bonus, the cruise line saves the port fees. However, they are doing this rather than raising the rates, so don't expect a refund. The cruise contract allows the cruise line to make these changes. If you don't like it, and you are outside the penalty period, you can cancel your cruise. The problem for the cruise line is simple, their costs are going up, but they cannot charge a booked customer more money (the Florida DA made that pretty clear). So, all they can do is reduce out of pocket expenses and not give a refund.