To prevent or stop a fire. That needs to be a fast and uncomplicated procedure.
You could add interlock logic: If the aircraft is below $altitude, inhibit the switch. But that ignores use cases like "we're going down and about to crash in a field, let's cut off the engines to reduce the risk of fire."
It's tempting to keep making the logic more complicated: If the aircraft has been airborne for less than $duration and the we're below $altitude, delay shutdown for $x seconds while blaring an alarm, except if this temperature sensor reads high suggesting there's a fire, or excessive fuel flow indicates a leak. This introduces new problems: more bugs due to ever-increasing edge cases; more systemic failures due to a broken sensor; etc. This also means the pilots' mental model is more complicated: you don't want them to flip a switch and then wonder "wait, why didn't that work?", and waste time trying to remember some flowchart from their training.
So the current best-practice solution, used wherever possible, is KISS: Each control does exactly one thing, and it does it in the most immediate and direct way possible. You don't find out about your mistake only after some additional set of conditions are met. It does what the label says, and if you don't like the result, you flip the switch back. It should only be more complicated to prevent a recurring problem.
For the most part, that turns out to be the most safe and reliable design.