I am using this library PI4IOE5V6416 - Arduino Reference to talk to a PI4IOE5V6416 chip via I2C. I am using the ATMEGA328p mounted directly on my board.
Then why are you powering the chip from the 3V3 supply? The data sheet for this device says it can take 5V, and as that is the voltage from the ATmega328 chip that will also be the voltage of all the signals.
The data sheet says:-
Feature(s)
Operation power supply voltage from 1.65V to 5.5V
Allows bidirectional voltage-level translation and GPIO expansion between:
1.8/2.5/3.3/5V SCL/SDA and 1.8/2.5/3.3/5V Port