If you look at the messages, when it fails the program end addr is 0xcbf.
It's then not seeing the next addr 0xcc0 as erased... there's still something there.

I think there's a setting to specify the full range and not let the PK4 pick it.