If it runs good with a full tank of gas I would say the fuel pick up tube in the fuel tank has a hole in it. When the fuel level is lower than the hole in the tube the fuel pump sucks some fuel through the screen on the bottom of the tube and some air through the hole in the tube.This causes the engine to starve for fuel. That is why it won't turn more RPM's. When the tank is full the fuel pump sucks fuel through the screen and through the hole in the tube and the engine doesn't starve for fuel. Have your mechanic pull the fuel tank pick-up out of the tank and inspect it. Hopefully he can do this without removing the fuel tank or tearing the whole boat apart.

