have you tried escaping double quotes?
M4MACROS="-D \"_PRODUCT_=$PRODUCT\" -D \"_VERS_=$VERS\" -D \"_BETA_=$BETA\""
I don't see why this shouldn't work, as always done that for me in that past
Yeah I tried that .. it didnt work. So far as I can see there is no way do do this because BASH parses out the contents of variable expansion using $IFS separatores but IGNORES quoting. So you cannot use "late" quoting within a variable when the variable may contain (say) filenames with spaces in them.
I would find this extraordinary, but, to be frank, most of the bash syntax strikes me as arcane. And yes I'm aware it's inherited from sh etc, but that doesnt make it less arcane