Why does `zfs list` and `zpool list` report very different sizes for my raidz2 pools?

I'm surprised you have such a large setup. Did you build this array? This is potentially a bad arrangement for performance due to the pool design.

Either way, the zpool man page explains this. zfs list will show your usable space. The zpool list shows parity space as storage space.

   used                Amount of storage space used within the pool.

   The  space  usage properties report actual physical space available to the storage pool. The physical
   space can be different from the total amount of space that any contained datasets can  actually  use.
   The  amount  of  space used in a raidz configuration depends on the characteristics of the data being
   written. In addition, ZFS reserves some space for internal accounting that the zfs(8)  command  takes
   into  account, but the zpool command does not. For non-full pools of a reasonable size, these effects
   should be invisible. For small pools, or pools that are close to being completely  full,  these  dis-
   crepancies may become more noticeable.