As an update, I got the following response when asked on the GCC website:
"It's not part of the ABI, but there can be performance benefits from aligning arrays, for example when code is vectorized. It's not possible to easily tell exactly how large the array will be in practice, so even very small ones get aligned.
There's no point in doing this for scalar objects as the next location cannot ever contain a related object."