The reason for not allowing to remove a dataset once it is loaded is for traceability. Essentially, the solution is the data store for every historical dataset managed by the organization. If a dataset is no longer needed, simply don't use it in your surface models. But if it has been used in the past for data export, or within a surface model, it needs to remain in the data store, so that users can come back, query the data store, and find out where the exported data came from.
As Sabeshan explains, if an organization really want to emulate teh deletion of a dataset, simply have a "deleted" or "hidden" field in teh extended metadata, and use it to filter out datasets from the view.