VLAN traffic returning on untagged network

From your DHCP logs actually seems that both discover and offer packets processed without tag which looks correct. I’ve tried the similar configuration on VyOS 1.3.0-rc6:

interfaces {
    ethernet eth0 {
        address dhcp
        hw-id 50:06:00:08:00:00
    }
    ethernet eth1 {
        address 192.168.10.1/24
        hw-id 50:06:00:08:00:01
        vif 20 {
            address 192.168.20.1/24
        }
        vif 30 {
            address 192.168.30.1/24
        }
        vif 40 {
            address 192.168.40.1/24
        }
    }
    ethernet eth2 {
        hw-id 50:06:00:08:00:02
    }
    ethernet eth3 {
        hw-id 50:06:00:08:00:03
    }
    loopback lo {
    }
}
service {
    dhcp-server {
        shared-network-name IOT {
            authoritative
            subnet 192.168.30.0/24 {
                default-router 192.168.30.1
                dns-server 192.168.30.1
                domain-name camera.home
                ntp-server 192.168.30.1
                range 0 {
                    start 192.168.30.50
                    stop 192.168.30.250
                }
            }
        }
        shared-network-name camera {
            authoritative
            subnet 192.168.20.0/24 {
                default-router 192.168.20.1
                dns-server 192.168.20.1
                domain-name camera.home
                ntp-server 192.168.20.1
                range 0 {
                    start 192.168.20.50
                    stop 192.168.20.250
                }
            }
        }
        shared-network-name guest {
            authoritative
            subnet 192.168.40.0/24 {
                default-router 192.168.40.1
                dns-server 192.168.40.1
                domain-name camera.home
                lease 300
                ntp-server 192.168.40.1
                range 0 {
                    start 192.168.40.50
                    stop 192.168.40.250
                }
            }
        }
        shared-network-name lan {
            authoritative
            subnet 192.168.10.0/24 {
                default-router 192.168.10.1
                dns-server 192.168.10.1
                domain-name camera.home
                ntp-server 192.168.10.1
                range 0 {
                    start 192.168.10.50
                    stop 192.168.10.250
                }
            }
        }
    }
}

Everything works as expected, non tagged packets processed on 192.168.10.0/24 subnet and vlan tag 40 packets are processed on 192.168.40.0/24 subnet:

Aug 26 11:09:22 vyos dhcpd[1639]: DHCPDISCOVER from 50:06:00:0a:00:00 via eth1.40
Aug 26 11:09:23 vyos dhcpd[1639]: DHCPOFFER on 192.168.40.52 to 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:09:23 vyos dhcpd[1639]: DHCPREQUEST for 192.168.40.52 (192.168.40.1) from 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:09:23 vyos dhcpd[1639]: DHCPACK on 192.168.40.52 to 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:11:53 vyos dhcpd[1639]: DHCPREQUEST for 192.168.40.52 from 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:11:53 vyos dhcpd[1639]: DHCPACK on 192.168.40.52 to 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:14:23 vyos dhcpd[1639]: DHCPREQUEST for 192.168.40.52 from 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:14:23 vyos dhcpd[1639]: DHCPACK on 192.168.40.52 to 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:14:41 vyos dhcpd[1639]: DHCPDISCOVER from 00:50:06:00:0b:00 via eth1
Aug 26 11:14:42 vyos dhcpd[1639]: DHCPOFFER on 192.168.10.50 to 00:50:06:00:0b:00 (user-virtual-machine) via eth1
Aug 26 11:14:42 vyos dhcpd[1639]: DHCPREQUEST for 192.168.10.50 (192.168.10.1) from 00:50:06:00:0b:00 (user-virtual-machine) via eth1
Aug 26 11:14:42 vyos dhcpd[1639]: DHCPACK on 192.168.10.50 to 00:50:06:00:0b:00 (user-virtual-machine) via eth1
Aug 26 11:16:53 vyos dhcpd[1639]: DHCPREQUEST for 192.168.40.52 from 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:16:53 vyos dhcpd[1639]: DHCPACK on 192.168.40.52 to 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:19:23 vyos dhcpd[1639]: DHCPREQUEST for 192.168.40.52 from 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40
Aug 26 11:19:23 vyos dhcpd[1639]: DHCPACK on 192.168.40.52 to 50:06:00:0a:00:00 (DESKTOP-F0VGSTR) via eth1.40