Whenever I had to manually export and import my pool I did so with the command
zpool import $POOLNAME
It turns out that this simply uses actual device names (/dev/sdX) as indicated by my earlier zpool status outputs. The device names are apparently retained within the zpool.cache file and so will be used for the zfs reimport/mount. If udev assigns those specific device names to other devices then the import will of course fail. The advice from the zfsonlinux crowd was to export my pool and then reimport it with the command
zpool import -d /dev/disk/by-id $POOLNAME
so that the zpool.cache is set to use the /dev/disk/by-id links instead of the direct device names. I have rebooted with a USB drive plugged in to force udev into assign different device names and sure enough the pool continues to import correctly. The command zpool status now gives
pool: wd20ears_zfs
state: ONLINE
scan: scrub repaired 0 in 11h33m with 0 errors on Fri Aug 15 11:45:16 2014
config:
NAME STATE READ WRITE CKSUM
wd20ears_zfs ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-WDC_WD20EARS-00MVWB0_WD-WMAZA1268718 ONLINE 0 0 0
ata-WDC_WD20EARS-60MVWB0_WD-WCAZA4138722 ONLINE 0 0 0
ata-WDC_WD20EARS-60MVWB0_WD-WCAZA4157214 ONLINE 0 0 0
ata-WDC_WD20EARS-60MVWB0_WD-WCAZA4174978 ONLINE 0 0 0
errors: No known data errors
This is probably not applicable to those users with root (/) on ZFS as I expect that there is no zpool.cache involved.