The PCA9685 output has three different modes it will operate in, see page 28 of the data sheet. One mode ( fig 15 ) is a current sink. The other modes push and pull. In these modes the output signal will be at what ever voltage the Vcc is being run at, so you were right about that. If you want to run this chip at 5V but connect it to a 3V3 system, then make sure the pull up resistors on the two I2C lines are pulled up to 3V3 only.I suspect that the FET is not being turned on correctly, while it is a logic level FET that is a 5V logic level. There are not many FETs that will switch well on 3V3.
they're already integrated into one or both of the boards on the i2c bus, so i don't know how i would go about modifying them.
Or maybe add external pull-downs to ground that have twice the value, so that the I2C signals are pulledto 3.3V by the effective resistor divider them make with the pull-ups? Assuming 3.3V is enough to berecognized as properly high by the PCA9685