ValidateUpdateListItem Permissions should not change value of a readonly column with contributor permissions
Contributors should not be allowed to change readonly fields, they cannot with the classic update method.
I find normal that a full control user can do it, but not a contributor.
I find no reason, the classic update method does not work, but yes using ValideUpdateListitem.
There are other ways not to include fields you don't want the user to fill, without making it readonly, and if you make it readonly and you need a contributor to fill it, you can always use a flow to update from an elevated privilege.