I could see a few. having a plugin permit to have it more extensible.
For example, let's say I want to have a system that act a bit smarter,
and prevent removing kernel, and several others stuff depending on the
hostname ( ie, in a classroom where people are using VM to test ). Or
imagine I want to let kernel be removed because the system is in a
container, so I can detect the container type and decide to let people
remove or not.
If all is set in stone in the main software, then we can hardly permit
theses use cases.