Let us first check the rule that allows empty base class optimization to acquaint ourselves with the terminology:
N4659 standard draft [intro.object]
7 Unless it is a bit-field (12.2.4), a most derived object shall have a nonzero size and shall occupy one or more
bytes of storage. Base class subobjects may have zero size. [snip]
Then a requirement about distinct addresses:
8 Unless an object is a bit-field or a base class subobject of zero size, the address of that object is the address
of the first byte it occupies. Two objects a and b with overlapping lifetimes that are not bit-fields may have
the same address if one is nested within the other, or if at least one is a base class subobject of zero size and
they are of different types; otherwise, they have distinct addresses.
The empty base subobject and the first element of the member array may not have the same address because they are of same type.
Therefore, if we assume that the base subobject must be ordered before the members and that the members must be in declaration order, padding is required to achieve distinct addresses. However, I cannot find a rule in the standard that would require such order.
The portable Itanium C++ ABI (used by Clang and GCC) does specify the order, and under that specification, padding is indeed required:
2.4 Non-POD Class Types
II. Allocation of Members Other Than Virtual Bases
For each data component D (first the primary base of C, if any, then the non-primary, non-virtual direct base classes in declaration order, then the non-static data members and unnamed bitfields in declaration order), allocate as follows:
A different ABI might be able to exploit EBCO here, if it allows non-declaration order sub-objects or member subobjects before bases in the memory layout. At least as a special case with empty bases. I don't know if such ABI exist.