The main issue with the controller here is that your PI gains are not tuned to your system.
To illustrate this, remove the ZOH block and compare the output of the PI block, the triangular carrier, and the PWM output. You'll notice that the output of the PI regulator is changing faster than your PWM carrier. The effective frequency looks 3-4x higher than your desired frequency of 20kHz. The modulation output changes several times per switching period. This is not desirable.
Adding the ZOH block prevents the error input of the PI regulator from changing faster than the switching frequency. The result is then the PI regulator output toggles between max and min duty cycle.