Clang handles intermediate ELF object files fine and can link into a Mach-O final executable.
Windows under MSVC doesn't use ELF either (it uses PE for the .EXE) and it links in intermediate ELF object files fine. I've made an EXE that was a mix of files compiled by MSVC and GCC.