I dug a little deeper using the dpmutil library. SyzygyReadDNAHeader() called in dpmutilFEnum() reads 0xFF only from EEPROM. I2C communication appears to work correctly, at least the I2C HAL does not return any errors, which should also mean the firmware is running correctly. I have read out the EEPROM with avrdude, it matches the file created by syzygy-tools.py. Lots of dead ends.
What solved this issue in the end was patching the syzygy-tools.py script to work with my programmer and using it to flash the Pod MCUs 😩 Vio is now set as defined in the dna json.
I have been able to fix this issue by upgrading to vitis 2022.2, creating a new application project and importing my project's code. I flashed the sd card image generated during the debug build, PS program worked as expected.