Consider the following cases case of empty classes contained in another.
class Empty
{ };
class TwoEmpties
{
Empty a;
Empty b;
};
You may want the addresses of the two members, &TwoEmpties::a and &TwoEmpties::b, to be different. For this to happen they must have size > 1. (or the compiler would have to add padding between them, which would in turn complicate the rules for when and where the compiler can add padding to classes.)