ifconfig list caps shouldn't be used any longer. Case in point, also doesn't work for em(4) on 10.0-RELEASE. Should change to instead use ifconfig -m $interface and parse the capabilities.
vmx(4) uses VGT though, so will return "SIOCGVH: Protocol not supported" if the desired VLAN is not present on the host. (This is by design.) So if you want to use VLAN 20 as an example it must also exist on the vSwitch and the relevant interface must also be mapped correctly. So SIOCGVH should not be used as a reliable test.
Other than those two points, this has appears to have been fixed upstream for vmx(4):
: ifconfig -m vmx0
vmx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=61039b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWFILTER,RXCSUM_IPV6,TXCSUM_IPV6>
capabilities=61079b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWFILTER,RXCSUM_IPV6,TXCSUM_IPV6>
vmx0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=61039b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,TSO6,VLAN_HWFILTER,RXCSUM_IPV6,TXCSUM_IPV6>
ether 00:0c:29:e7:71:7b
inet6 fe80::20c:29ff:fee7:717b%vmx0 prefixlen 64 scopeid 0x3
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
vmx0_vlan20: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:0c:29:e7:71:7b
inet6 fe80::20c:29ff:fee7:717b%vmx0_vlan20 prefixlen 64 scopeid 0x8
nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: active
vlan: 20 vlanpcp: 0 parent interface: vmx0