MH_WEAK_DEFINES means that an executable has a weak symbol. Weak symbols are a linker trick to avoid linking in supporting code which isn't used. For example, the compiler does its analysis and determines that the application is integer only and tells the linker to not link in floating point support code. From the Oracle® Solaris 11.4 Linkers and Libraries Guide (which is not talking about Mach-O):
Historically, weak symbols have been used to circumvent interposition,
or test for optional functionality. However, experience has shown that
weak symbols are fragile and unreliable in modern programming
environments, and their use is discouraged.
This is explained better in Chapter 6 of John Levine's Linkers and Loaders.