technically no, the drives don't have to be the same size.
but the array is only as big as the sum number of disks -1 (for parity) * the size of the smallest disk.
for example if you have four disks that are 500GB and 1 disk that is 250GB your array size is 4*250 = 1TB
if you have 4 500GB disks and 1 600GB disk your array size is 4*500GB = 2TB.
in the first example the remaining space on the first 4 500GB drives is not used, (250GB on each drive is wasted) in the second example 100GB on the fifth disk is not used (100GB is wasted).
for efficiency and not wasting space,(and money). all the drives should be the same size.
but they can be different.
(also).
they can be different kinds of disks.
if your array is software based there is no reason you couldn't mix IDE/SATA or even USB disks, (I imagine that the write speed is as fast as the slowest disk since data is split across all the disk at >1024 byte sizes.