Code size reduction (30478 of 30720 bytes)

It was proven that it is not.

I may be wrong, but I think the define is a compiler directive and not something that gets passed on to the microcontroller... that being said, if you #define something, when you compile, the compiler changes the #define'd for the value used by us. In other words, a define exists merely to allow us to give meaning to values in code. Using const int, would create an actual variable. I know that in the end, it doesn't matter, because both work... but that's what I learned.

One thing that may be happening is the compiler optimization settings equaling a define and a const int to the same. This is after all a memory constrained device and I don't know what optimization options the microcontroller allows or is set to.

Here's a few more discussions on the subject that point out some differences:

http://www.velocityreviews.com/forums/t283393-define-versus-const.html
http://www.gamedev.net/topic/418410-c-difference-between-define-and-const-int/

The reason why the Serial.begin(9600) takes up the same space is because it still needs to load a value (this time from Flash) into memory to pass it on to the register.

But either of them won't solve your memory program shortage. It would be nice though, to create a tutorial or a sticky post explaining this in the forum...