If it’s a brand new NFT contract, then that could be built into the contract itself. Basically the NFT contract would be the owner or approved operator for your ENS name, and then the transferFrom / safeTransferFrom methods would also call setSubnodeRecord to transfer the subname automatically, whenever the NFT itself gets transferred.
If it’s an existing NFT contract, then you’d need to setup a separate “claim” contract. That way even if the NFT gets transferred/sold, the new owner can still claim their subname at any time.
In either case the subnames would not be Emancipated in the wrapper, because otherwise the contract would not be able to automatically replace subnames. So that means the owners of the subnames would not be able to use owner-controlled fuses or fuses on any sub-subnames. However you would still be able to use parent-controlled fuses (“perks”) on the subnames if you wanted to.