Did you check the IOMMU groups? You can't passthrough individual devices, you always passthough a whole IOMMU group. I would bet that your NIC is sharing a IOMMU group with other onboard devices like the memory controller, storage controller and so on. So when trying to passthrough your NIC you also remove other hardware from the host that the host actually needs to operate.
When using consumer hardware usually all onboard stuff attached to the chipset is sharing a single IOMMU group, so that only stuff in the PCIe 16x slots can be passed through.
Whats the output of this?
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU Group %s ' "$n"; lspci -nns "${d##*/}"; done;