So it turns out that this only fails for custom fields. However, if you include a standard field in the same submitFields call, it works. Even stranger, if you include ANY field value that does not start with ‘custrecord’ (even if the field does not exist) then the submitFields will be successful. Strange!