NoIdeaWhatThatIs that's how it works in Flarum. The beauty is that it can be changed and augmented by extensions.
Personally I would recommend to implement this as a background process. Only let users soft delete (maybe change it so users can no longer see their soft deleted content), and only permanently delete the content after a given amount of time in the background through a scheduled task. This way you still have a protection against accidental deletion without the content persisting forever.
When implementing permanent deletion, the extensions must also be taken into account. For example what should happen to files attachments in a post? Extensions might have their own soft deletion logic. Permanently deleting posts can rupture links between content tied to those posts, some extensions might work better with soft deleted post as this preserves the "thread of ownership" of the content linked to those posts through database foreign keys.
For forums without an audit log, preserving the content as soft-deleted also leaves a trace of what happened. This particular use case has solutions though as there are audit log extensions for Flarum, my extension will keep the log even if the content it refers to has been deleted (and log who deleted it).