It almost certainly has something to do with alignment. Different types must be aligned differently in memory, and since the elements of one struct are in a different order than than the other, they are aligned differently.

How these differences play out vary greatly between architecture, OS and compiler. See the Wikipedia article and your OS/compiler's manual for more specific info.