To make sure we understand each other, suppose your array actually corresponds to 256 bits (which is equivalent to 32-byte alignment).
Then yes, your #pragma omp simd aligned(array:32) is safe, regardless of array length or array type size. The only thing that matters is the address pointed to by the "pointer" used to refer to the array.
EDIT : I realized that my answer, although correct, was a bit dry, as it was only me, answering, but without any "official" support. So, here are some excerpts of the standard to sustain my answer:
From the OpenMP 4.0 standard §2.8.1 :
[ C / C ++ : aligned sentence declares that the object to which each point in the list of items is aligned with the number of bytes expressed as an optional parameter of the aligned sentence.]
The optional parameter of the alignment sentence, alignment, must be a constant positive integer expression. If an optional parameter is missing, realistic default alignments for SIMD instructions on target platforms.
[...]
[ C : the type of list items displayed in the aligned condition must be an array or a pointer.]
[ C ++ : the type of list items displayed in an aligned condition must be an array, a pointer, an array reference, or a pointer reference.]
As you can see, there are no assumptions about the data type referenced or referenced by the variable used within the aligned clause. The only assumption is that the address of the allocated memory segment is byte-aligned with an optional parameter or some “realistic default alignments by default” (which BTW strongly recommends that I always give this optional parameter, since I have no idea that this is the default value set by the implementation may be more accurate whether I will be sure that my array is indeed aligned that way).