Well yeah, -O3 attempts to optimise for speed at the expense of larger code size. If a relatively small proportion of the executable is actually used at any given time, that tends to be a win. Most of MAME isn't actually being executed for any given system, so we set -O3 by default.