It is not needed to delete your old Piwik files before transferring the new ones. The new files should overwrite all the old files with the same names.
Files should be deleted first, but not the files of custom plugins. Otherwise they run into issues like https://github.com/piwik/piwik/issues/10884 and https://github.com/piwik/piwik/issues/10805
Maybe we could be better offering a command that accepts a path to a zip file, or a "update-files-only" command. Maybe even via UI. The command with the regular update logic would make sure to delete not needed files. This is for cases where people had a problem where one or two files were not updated or deleted etc. Of course the same problem could happen again and the same files might not be updated or deleted.
When updating manually, we would need to be able to show a list of which files need to be deleted. Not sure what best workflow would be, but people are running into these issues all the time and we get issues about these issues all the time.
Agreed it is much needed as this creates real bugs and many users would be affected.
Another proposal on top of your existing ones (command console, UI, showing files to delete during upgrade) could be to have a System check diagnostic issue a warning or even error if an unexpected file is found within Piwik filesystem (excluding marketplace plugins) ?