Hello Thomas,
In such a case, we can suggest an alternative solution. You can use a virtual property that can store multiple values. For example, CustomAttributeTextMultivalue1 can store multiple string (text) values.
So, instead of storing the membership expiry date in the user properties, you can store the date when membership expires and some property of the user who was added to the group (say, GUID) in the CustomAttributeTextMultivalue1 property of the group, one value for each user. When user requests membership, and membership is granted, the date when membership should be revoked, alongside with the user's GUID, is stored in the CustomAttributeTextMultivalue1 property of the group by a Business Rule. When membership expires, a Scheduled Task removes the user from the group and removes the value that corresponds to the user from the CustomAttributeTextMultivalue1 property.
As for editing the expiry date before approving, currently an approver cannot update properties of an operation before approving it. We have such a request in our product backlog, but currently this is impossible. As a workaround, the approvers can use the denial reason. When denying a request, approvers can specify a reason why the request is disapproved. In the denial reason they can, for example, notify users that they can request membership for a shorter time, for example.