You're describing operations that can be done on a pool, while conveniently ignoring that they can not be done to a single RAID array (vdev), which is the more useful comparison against btrfs.
Yes, you can add drives of arbitrary size to a ZFS pool, but when put into the same array, they all get treated as the size of the smallest one. Yes, you can expand a ZFS pool but only by adding a new array or by incrementally upgrading all the drives in the new array. Yes, you can remove drives, but only for replacement purposes; you can't do an in-place rebuild to make the reduced number of drives the new normal instead of degraded mode.
I know nothing about ZFS, so sorry if these are dumb questions.
Can you have an array that contains a single disk? And if you can, then
* Can you add as many single drive arrays to a pool as you like?
* Can you migrate data off of a given single-drive array on to other single-drive arrays in the pool and then permanently remove the array from the pool?
Yes, yes, no. Plus a single disk array has no redundancy.
Of course you can remove drives in ZFS. How else could you replace disks?
I downvoted your post because every statement you made about ZFS is wrong.