MMP files are fed through the C/C++ preprocessor. On the other hand, MMP files control the toolchain which also feeds stuff through the C/C++ preprocessor.
#define in an MMP file affects only the MMP file itself, and files #included in it. It does not affect other parts of the toolchain.
MACRO in an MMP file defines preprocessor macros for the toolchain e.g. through the compiler -D command line option.
Therefore, if you want variation in the MMP, use #defines. If you want variation in the source files, use MACROs. If you want both, use both.
Lauri