Poudriere uses jail(8), a lot. Each build job is set up from a clean jail. This 'limitation' is because a jail runs on the host's kernel. The host kernel can only support up to version X, running a X+1 userland will cause problems. There's backwards compatibility, not forward.This information is missing in the handbook.
To run 12, 11 or other, previous version jails (or executables in general) you need to have a kernel with the COMPAT_FREEBSD12, COMPAT_FREEBSD11, etc. Just in case you decide to build a custom kernel and remove all those. The GENERIC kernel has them enabled by default.