Yes, there is a good reason: It's a 3 possible results case:
- null: no change of program flow
- false: interruption of program flow with error (means the plugin disallows normal execution)
- true: interruption of program flow without error (means the plugin did all the remaining work, e.g. when a new installation method that is not in the normal installer is implemented in an installer-type plugin, e.g. install from a JSON-URL ;-) )