I was right. Tersane is the true culprit, the one who has commited the crime, the dastardly shipyard of evil, the cheapskate to beggars and their most cruel robber. I removed the line about Prize Ships from Tersane.lua, and reloading the save to spend gold on Sea Beggar gave him the free Prize Ships promotion. It's like the text on Tersane means only it can provide Prize Ships, while other harbours/cities have to actively remove it when they produce a unit that has it (meaning, only Sea Bagger). That happens without Ottomans even being in the game.
I'm not sure if the same will occur to all bought/produced Beggars only with harbours because of tersane.lua, or if it means all cities altogether, but the code is somehow interfering with Prize Ships on Sea Beggars. I removed it all from the lua (there's no Ottomans anyway) to ensure my UU is in tip-top shape, but this is probably the true culprit.
pUnit:SetHasPromotion(GameInfoTypes.PROMOTION_PRIZE_SHIPS, pCity:IsHasBuilding(GameInfoTypes.BUILDING_OTTOMANS_TERSANE))
I'm no surgeon of code and might be wrong, but it sounds like it's telling all cities that Prize Ships can only be given to a base unit if Tersane exists in the city, and as Dutch cannot get a Tersane, their UU doesn't get free Prize Ships unless it's upgraded in which case the code won't bother checking if the origin place has Tersane.