Cannot uninstall civivolunteeer
I had an identical experience, here's how I fixed it.

Following @Demerit's clue:


Using sql: 

update civicrm_uf_group set is_reserved = 0 where name = 'volunteer_sign_up'
Now remove the profile (previously, you couldn't via the web interface).


Re-do the uninstall, it now succeeds.

As per the note in the uninstall.sql file, the uninstall process is trying to use a foreign key to remove the profile indirectly, but it's failing. I suspect that profiles got more complicated and this strategy no longer works? Alternatively, perhaps when an early version of the extension gets installed it's subtly different?

Also note that this is actually the last line of the uninstall, so it mostly does uninstall.