This is a controversial subject...
I'm not going to delve into it.
A few observations anyway :
ZFS is not the most tolerant/convenient/respectful system for USB devices... because it's easy to damage the file system if one is not careful... moreover, one should never yank a ZFS USB device without having exported the pool before !!
How to create a ZFS filesystem on a USB device :
1) Plug the USB key/disk into your machine
No need to erase it... ZFS will take care of it
2) Identify your device
format -e
(for this example, we'll take c4t0d0)
(exit format command right after identifying your device, using Ctrl+c)
3) Create the ZFS pool (USBDISK) and a dataset (DATA)
zpool create USBDISK /dev/dsk/c4t0d0p0
zfs create USBDISK/DATA
4) Enable compression on your pool
zfs set compression=on USBDISK/DATA
4bis) Create an encrypted dataset on your device (optional)
zfs create -o encryption=on -o keylocation=prompt -o keyformat=passphrase USBDISK/SECURE
Enter the passphrase of your choice (but you'd better remember it!)
A dataset named SECURE will then be created on your key.
You can navigate inside and place the files to copy :
cd /USBDISK/SECURE
5) Now, move inside and copy whatever you want:
cd /USBDISK/DATA
Let's create a simple text file for the example, with a test sentence:
echo "this is a test" > /USBDISK/DATA/test.txt
6) BEFORE unplugging your USB device !!
You must export your pool so that it is no longer recognized by your system.
This is imperative!!! If you don't do this, say goodbye to your data!!
First, get out of your device: (return to / for example)
cd /
Then export the pool:
zpool export USBDISK
Wait for the operation to be finished before unplugging your device!
If your device has an LED, watch it... It must stop blinking.
You can unplug your device now.
Sometimes you device will be resisting, even after waiting a long time... resistance like "pool is busy"...
You can force the export:
zpool export -f USBDISK
7) Plug your device back in, wait a few seconds, and re-import your pool
zpool import USBDISK
Wait for the import operation to be finished...
The import may not work.. You must first ensure that the device is properly seen by the system (format -e to check, then Ctrl+C).
You can now go back to your device and retrieve your incredible text file!
cd /USBDISK/DATA
ls
The file will reappear...
You can plug your device on others computers, just import the pool with the command zpool import USBDISK. No problem, it will automatically mount. (You just have to remember the name of the pool created :-D).
You will have to export the pool again before removing your key/device!