I'd still vote for a connection issue, although it could the starter itself. That you can start reliably with the generator
running says that higher voltage from the battery charger
compensates for voltage drop in a connection somewhere.
I'd still re-check the major ones, make sure the contact cleaner did its job. On the cable lugs you should see clean copper color (or tin if they are tinned). On the engine
clean iron. I find a Scotchbrite scouring pad does a good physical job rather than relying on the chemicals (it could be contacts still wet with cleaner worked OK at your first start, as they dried they became less good). I prefer to use a good, conductive
anti-seize paste during re-assembly to keep things working.
As posted above, check the starter mount area:
The negative connection goes through those two bolts in the mount and the face. It's a large surface area so generally OK, but worth a check.
Also check the connections at the solenoid:
Be careful here, the positive from the battery
is generally hot all the time, best practice is to disconnect the battery before working on these.
The next steps (to me) depend on how comfortable you are working around the engine
while it is moving. Depending on the boat
there may or may not be space to do this safely.
You can use a jumper cable (or screwdriver) to jump across the two big contacts on the solenoid shown above (one under the rubber boot and the big copper one). If the engine turns pretty strongly then the problem is likely the solenoid itself. You can also run a test jumper from the battery + to the small connection on the solenoid to bypass the key switch, etc. to rule
out that circuit (personally I think this is less likely, but a low voltage on that line can prevent a solenoid from fully pulling in. Usually though that results in the starter spinning but not engaging the Bendix).
After all of that you start to get into connections inside the starter. They're usually pretty easy to check/rebuild, although I see online that third-party they seem to be available for <$100, so....