Tools have been part of Frontier/Radio/OPML for a long time, it's also been a long time since there has been an enhancement to the format. Today that changes, with the addition of the top-level #installer table which controls how the Tool is installed in the environment.
First, it's optional, not required. The OPML Editor can and will install tools that don't one.
It's a top-level table, at the same level in the object database as the Data, Info, NodeTypes, Responder, RpcHandlers, SoapHandlers, Suite, Thread, Website and WindowTypes tables.
It contains one or more sub-items with fixed required names, some booleans, outlines, scripts, sub-tables, etc. All are used either in installing the Tool or uninstalling it.
It's partially for efficiency, otherwise code would have to be added in the init script that checks every minute to see if something exists. With the #installer approach, the tool doesn't have to implement any code to install things, and it only is overhead at install-time. One less thing to worry about, and less CPU usage.
But mostly it's designed for maintainability, and to elevate the process of developing a tool. Why should you have to worry about the same set of problems every time you write a tool. Lack of uniformity means it's impossible to upgrade the whole thing in one shot, and creates opportunities for bugs both in the initial writing and when the code needs to be maintained. By factoring out the code there's no possibility for bugs because you aren't writing new code.