Please investigate the security tab on the flow action that you are using and confirm that the User4 access role has the privilege listed on the tab. There may be issues with the organization setup including workgroups for the user operator that you are using for testing. Make sure the administrator and user are in same workgroup.
Application set up is fine. I am not sure what is privilege to reassign the work. If i give Perform privilege at work class in the access role, it is working but at the same time user is getting access to all flow actions which should not be the case. I tired to use the pyAssignmentTransfer/TransferAdvanced out of the box flow actions by setting up the Action Transfer at work class at User4 access role but it didn't work. I think there should be a privilege to reassing which i couldn't get it.
TransferAdvanced has 2 privileges - ActionTransferAdvanced,AllFlowActions. The user who is performing a reassign should have one of the two privilege. AllFlowActions privilege is OOTB given to the User 4 role untill and unless overwritten in your application.
Now can you trace to see what is the step your rreassign is failing. Also remember, if you are reassigning into a Work basket, the user should have access to delete the worklist assignment.
I tried by adding above two privileges to the both Work-/@baseclass. but no luck. When the user reassin the work to work basket, i didn't see any issues. Only issue that i have seen is when reassign to the work list. This working when i give Perform privilege, but i enable this privilege user is getting access to all flow actions.