it is intentional that you cannot delete them. It was explained to me as a way of "version control". It is annoying but I put a version number in the names of the policies then copy one policy to create a new one with the next highest version number.
It's not version control per se, but more the concept that if an approval policy has been used then it needs to be available for audit purposes at a later date.
Hope that makes it clearer.
You can set a filter to only show active policies, and mark it inactive.
There should be an environment based option that allows one to decide whether or not it is a concern of theirs to audit approval policy... by way of policy implementation history. And that said, it would be something of merit to have implementation history auditing IF it actually provided full auditing value.
The current implementation of this non-delete practice only shows that there was a policy with a specific name which had some levels of approval and who changed the policy last (in which the means of change is only to set it to Inactive, which then cannot be set back to Active). The history doesn't maintain where the policy was Linked within the Entitlements. It isn't a valid record without information of where it was linked. Also, the history doesn't maintain any required change notes as to why it was set inactive.
To put a primary focus on auditing the Active/Inactive nature of a policy versus auditing the actual Approvals generated against a policy is a bit odd, IMHO. Having a history of approval activities is more likely to be valuable to an audit than the ETERNAL presence of dead or mistakenly implemented approval policies.
On the flipside... it is just a list. It can be filtered through Advanced Search. Life goes on....