On a former volunteer software that I used, I was able to "lock" the schedule 5 days prior to the volunteer shift. This way, if a volunteer wanted to remove themselves, they would need to contact me. I, of course, would remove them on their request, but I then knew exactly where the gaps were in the schedule and could ask for additional help if needed.
Currently, if I don't catch a notification telling me that someone removed themselves from the schedule, I only find out when they don't arrive. Volunteers sometimes remove themselves the night or morning of.
I would appreciate a setting on the Opportunity level to "lock" the schedule, where volunteers couldn't remove themselves after a certain number of days ahead of the scheduled opportunity/shift. Currently, it's all or nothing, which I'm sure is sufficient for many organizations.