This was a fun one!
although the documentation states that just contributor permissions are needed on the NIC to make changes, to change the private IP address between dynamic and static, you will also need contributor permissions on the VNET as well. I tested this with read permissions on the VNET but got a permissions error (like this should have given).
giving contributor permissions to a VNET to those who should not have it is not a great situation, why do you want users to have permissions to change the private ip allocation type?