Workflow cannot currently update fields that are set to disabled on a form. The workaround is to add script to set the field to be disabled so workflow may update it. As a customiser, I'm tired of having to do this and it also increases the performance overhead when loading a form.
I don't see the point of restricting workflow update steps from updating read only fields. Pretty please, enable this and save all the customisers out there some precious time.