Hmm, it shouldn't matter what code you're trying to upload. Does it happen only if that sketch is already on the board (i.e. can you upload it once)? Does it fail for other sketches (without the goto)?
Weird. Can you try going into your boards.txt file (in the Contents/Resources/Java/hardware/arduino sub-directory of the application) and changing "stk500v2" (for the Mega 2560) to "wiring"? That should tell avrdude to reset the board before upload (in addition to the reset that's done in the IDE) and might help.
If the compiler is smart enough to output a jump instruction then there is no difference but it might produce a test and jump which would be slower. goto is very ugly and produces a jump.
Not good style I agree but I was seeing how fast I could toggle a pin using standard function calls.