There is no way to save an empty string programatically using the model classes.
In some cases it is important to differentiate a null value from an empty string value, so it's recommendable to allow a way to save empty strings at least programatically.
Attached patch
This implements a solution where programatically empty strings can be saved like:
We are usually very careful when changing PO - so, I'll just leave the patch here for future reference in case this is required, for the moment it seems is not needed.
Closing the ticket as potential idea.