The client that publishes the message sets the retain bit. i.e. the client sends a message and tells the broker that it expects that message to stay until something changes or deletes it. There's usually a significant semantic meaning between a message that has retention and one that doesn't. (Though expiry blurs this a bit).
I don't use mosquitto, but when I did, I also didn't use its bridge since I wanted bridging features it didn't have and I ended up writing
my own one afternoon. It wouldn't be terribly hard to get my bridge to drop retention (or perform other manipulation). That starts to drift a bit from the general purpose of a bridge, but would be within the spirit of such a thing. The first functioning version of my bridge (v5 <-> v5) was around 200 lines of code (half of that was the parser for the configuration language I made for it). It's up to almost 270 now, but supports multiway bridges and some basic rewriting. I've not looked at it in a year, but it looks like it'd be pretty easy to bridge with retention stripped.
This is pretty far from what you're looking for, but I've also written most of my own mqtt clients, and broker as well. My clothes are all woven from the finest yak.