How to always allow users to delete their own accounts?

Not in the default UI.

Our customers that need to automate it set up a central GDPR account deletion page external to Discourse that deletes the account across all of their systems, including their Discourse site. This is accomplished via a call to the API from their central compliance engine.