I have three disks that make up a RAID-5. Mdadm repeatedly spat out the third disk (even after replacing it), so I took a closer look. After checking the cables, I eventually decided to label the disks with their UUID as reported by blkid. (and (originally) used in mdadm.conf to identify the disks. This was replaced by the /dev/sdX because the third UUID stopped showing up)
Leaving only one disk plugged in, I rebooted, labeled the disk with what blkid told me, removed the disk, plugged in a different one, rebooted...
The second disk's UUID looked very similar to the first one, so I plugged them all in again, and asked blkid their UUIDs again.
It looked like this on the server:
/dev/sdb: UUID="32c8da8b-e6d5-9a85-5cfc-1a8b59535263" TYPE="linux_raid_member"
/dev/sdc: UUID="32c8da8b-e6d5-9a85-5cfc-1a8b59535263" TYPE="linux_raid_member"
/dev/sdd: UUID="32c8da8b-e6d5-9a85-5cfc-1a8b59535263" TYPE="linux_raid_member"
Popping them each into an external cradle and attaching them to my laptop confirms that these are their actual UUIDs.
I've tried changing the UUIDs, but I can only find information about changing partition's UUIDs, but these belong to the disks themselves.
Every time a disk is removed or added, the BIOS shows the new configuration and asks you to accept this before rebooting, so I suspect that the BIOS/SATA driver is at fault here.