But within a single object the compiler doesn't need to obey the ABI rule at all if that's faster.
Now, you obviously could imagine an object and more powerful linkers that had enough optimisation magic to produce the same output executable from the sixty object files, but just spitting out a single source code file is a LOT easier than making that optimisation work on every platform now and in the future.
The invocation above creates one object file for each C source file, as temporary files, (in a Unix system you can watch it do this with a suitably powerful syscall tracer, presumably something similar is possible on non-Unix systems but I don't know exactly how)
Then it links them and produces the output you've mistaken for an "object file", then it deletes the temporary files.
#include "mycrypto.1.1.h"
Doesn't that have the same effect of being easy to include? The amalgamation may be better for the compiler but I'm not sure why.