MOSfet's are quite robust for over currents during short times, and if you're already measuring motor current with a sense amplifier, then doing overcurrent protection in software is good enough for anything except a hard short in the wiring.
There are also no hard limit on motor current for motors.
A lot of motors can be safely overloaded (Doubling the current is quite common) for a short time (upto a minute or so) to get burst of power out of them.
This is often used for example during acceleration.
The limit is the themperature that the motor has reached, and it takes quite a while to heat up.
A temperature sensor (and software) is a good way to make a motor + controller combination more reliable.
In industry (3-phase induction motors, from small to many kW) it's common to have motor protection switches.
These switches tend to have a relay that opens the circuit at too high a current, and they also have bimetallic strips with resistance wire around them.
If there is too much current during some time, then the bimetallic strips heat up and also shut of the motor.
This can also be programmed in software by keeping track of the integral of the square of the motor current (heat generated by ohmic resistance) combined with a slow decay to match motor mass and cooling.
A real temperature sensor also works with an obstructed fan, while the software has no knowledge of that and that limits it's usefulness.
Some microcontrollers also have some extra functions in their ADC peripheral. They can for example generate an ISR if an ADC sample is above a preset value.