I thought of using Access Profiles instead of directly assigning entitlements. Since Access Profiles are not sticky, they help avoid the challenges associated with sticky entitlements. Additionally, this approach would allow users to simply request the new Access Profile without having to explicitly a remove-and-add request for the existing entitlement as suggested in the below post.
Additionally, for applications where access removal is not possible, I am considering using a Before Provisioning Rule to intercept the remove entitlement request and convert the operation into an account disable action instead of an entitlement removal.
Question about single-value entitlement schema behavior in SailPoint ISC - Identity Security Cloud (ISC) / ISC Discussion and Questions - SailPoint Developer Community