All NFS4 tutorials I have encountered so far recommend bind mounting real directories into the export root. Is this a technical necessity? If I had a directory that's only meant to be exported, is it sufficient to make it a subdirectory of the export root or does it really need to be bind mounted?
It's not compulsory. It gives you flexibility to export other filesystems which were mounted at arbitrary locations. I guess it's good practice; it would let you change the "real" mount point of the filesystems without necessarily confusing NFS clients.
It's not compulsory to use separate filesystems either, but
unless you explicitly enable subtree_check, you can only export whole filesystems. It would look like you're exporting part of a filesystem, but there wouldn't be any security enforcing that.