The relay is probably a PCB soldered-in relay inside/under the underhood fuse block.
The BCM grounds the relay coil to energize the relay. Either the BCM is turning the relay on or there is a bad wire somewhere shorting to ground energizing the relay.
Or, the relay has failed in a closed position. (Unusual, but not impossible
I have attached a drawing for the fog lights.
The BCM drives the relay which in turn powers the fog lights. According to the drawing, the relay is indeed in the underhood fuse block. But the drawing is not clear if it's on the topside, or whether it can be easily removed. That is, it's not clear if it's plugged in versus being soldered in place on the lower layer inside the fuse box.
I would try to measure the voltage across the relay coil. That may require tracing the wire back from the fusebox (C2-H5, D-GN/WH) to a good place to probe it. With the car off, measure the voltage between B+ (+12V) and C2-H5. If it measures close to +12V, then the BCM pin is stuck low, or the wire going to the BCM is shorted to GND somewhere along the path. If there's no voltage across the relay coil, then the relay is somehow stuck closed. Or there's a short outside the relay between its input (B+) and pin C2-G1.
If the relay can be removed easily, and the fog lights go out (with key off), then the relay is bad. If it's soldered in place, then, without removing the relay, remove the fuse to verify the fog lights go out. This will indicate if the short between B+ and C3-G1 is upstream or downstream of the fuse.
The idea is to keep checking the easy stuff, but eventually, it may become necessary to de-solder the relay. With the relay removed, if the lights stay on, the short is in the relay box. If the lights go out, before soldering in a new relay, I would get some jumper wires and temporarily wire up the new relay to verify everything works correctly _before_ soldering it in place
On another forum recently, a guy paid to have the tank dropped and a new fuel level sensor installed. But that didn't fix the gas gauge. My thought was, why the heck didn't they check the level sensor functionality _before_ they put the tank back in? SMH.