Hi Martin,
I had to research it myself. Seems like SAP had the whole thing planned ever since SAP Note # 7... :-)
In 4.5x the field DEVCLASS was introduced to S_DEVELOP as the organizational unit for controlling development objects.
In 7.31 already the extended syntax check (SLIN) was equipped with warnings for package conformity.
It is now configurable since then to influence how strict the syntax checks and runtime checks are. There is a series of blogs on it by Tobias Trapp which includes the security advantages amongst others -> google for "site:sap.com package concept trapp"
Yes, I completely agree that a package can only be switched to runtime errors once it provides all required APIs or it's classes permit "friends".
Cheers,
Julius