It’s precisely because devs can make mistakes that players (specially the ones that pay) should be able to access previous versions. Devs can and do often break something even when trying to fix something else.
However devs should be able to delete versions too, because some serious mistakes (e.g. leaking info) require actually unpublishing.
I will agree that at least when pushing the exact same –userversion number (instead of incrementing it) it should warn, and let you “force” to replace the previous one, thus unpublishing it. This way, devs will naturally tell when they meant to keep a version or drop it.