Most drive manufactures use a jumper setting to enable the device to manage its own power. On Green Western Digital drives, for example, jumper pins 3&4 (2nd row from the right when looking at the jumper block from the rear of the drive). Once this is accomplished, the drive will never spin unless commanded. This allows a RAID or vault controller to start the drives sequentially or as needed.
The following sugggests some approaches not Arch specific. Your mileage may vary.
With the drives jumpered, you will need to trigger starts when mounting. During boot, this is done with a script in /etc/init.d or a "start on starting mountall" triggered script depending on your system's init(8). This is not an issue if you never mount until needed.
once they are detected udev(8) or other daemon may magically start sleeping disks necessitating modification of the daemon's rules.
It may be necessary to create /sbin/mount. scrips to intercept mount commands and get the disk ready before using the original mount program for the FS type. For example, move /sbin/mount.cifs to some place like /usr/lib/mount/ and call it from a script (or program) you put in /sbin/mount.cifs that initially powers the drive and possibly waits for it to be ready.
umount(8) as above to put drives to sleep.
udev(8) will emit a "device off/online" event you might want to handle/use when the device changes state.
Once your devices are spinning only when desired, you might look at automount(8) or afuse(8) for automatic management. That way, whenever you reference a file on a sleeping drive, it will spin, mount and return the data transparently -- though with some delay. When idle for a while, it will umount(8) and spin down.