I did the strace thing (thanks for the info there), and I found that eggcups, magicdev, fam, and xscreensaver, and that stopped the regular accesses of the hard drive. Each one was responsible for some amount of the total. Both eggcups and xscreensaver were checking local time, among other things.
Checking local time how? When you're looking for drive access, you should be checking for stat*(), open*(), write() or read() calls. Checking time normally won't do any of those things, and won't cause drive access.
Fam also should not access the drive on a regular basis. AFAIK, it asks the kernel to monitor files and directories specifically so that it does not have to stat() them on a regular basis. When there's a change to a monitored file or directory, the kernel will inform the fam process.