While developing a component the database can go through many changes. Updating the component then either goes through many schema update files, or causes problems. Re-applying a database change file (by resetting the schemas table) that adds tables, columns, or indexes currently generates an error that prevents installation.
Is there a compelling reason why such errors as adding a duplicate table/field/index that already exists shouldn't be ignored? The equivalent applies to deletions, I suppose.
MySQL (& presumably others)(?) has a very easy mechanism that would work for this, creating specific error handlers.
This would make the database part of an upgrade idempotent, as the source code part (mostly) already is (did I see the hint of a "delete files" tag in J4 installation files?)
I can see it might be argued this isn't a good idea for public releases, but while developing it would solve a real nuisance when a component has extensive, and evolving, database use.