I believe it's a (BAD) silent failure mode in the server code.
If I understand correctly, the purge request isn't coughing an error when it gets to the 'allow_user_dataset_purge' check and instead is silently marking (or re-marking) the datasets as deleted.
I would rather it fail with a 403 error if purge is explicitly requested.
That said, it of course would be better to remove the purge operation based on the configuration then to show an error after we've found you can't do the operation. The same holds true for the 'permanently remove this dataset' link in deleted datasets.
I'll see if I can find out the answer to your question on the cleanup scripts.