The answer to your question is yes, this works very well.
During startup the isc dhcpd server will first read subnet blocks in its configuration file. After this the daemon determines which interfaces to use based on matching subnets. As soon as the server is started client DHCP requests are answered. Those are handled based on the interface the request is made to. The MAC address of the server interface is irrelevant during this process.
Suppose you have two VLANs available. The VLANs normally derive their MAC address from their parent interface, so it is very well possible you have duplicate MAC addresses:
[test@testrouter ~]$ ip addr show enp3s0.2
2: enp3s0.2@enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:00:00:00:00:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global enp3s0.20 valid_lft forever preferred_lft forever
[test@testrouter ~]$ ip addr show enp3s0.3
3: enp3s0.3@enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:00:00:00:00:20 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.1/24 brd 192.168.3.255 scope global enp3s0.20 valid_lft forever preferred_lft forever
Now, we create two subnets in the dhcpd.conf file like this:
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.101 192.168.2.151;
option subnet-mask 255.255.255.0;
option routers 192.168.2.1;
}
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.101 192.168.3.151;
option subnet-mask 255.255.255.0;
option routers 192.168.3.1;
}
During startup of the dhcpd server the following messages appear in the log file:
[test@testrouter ~]$ journalctl -u dhcpd | grep LPF
dhcpd[1263]: Listening on LPF/enp3s0.2/02:00:00:00:00:20/192.168.2.0/24
dhcpd[1263]: Sending on LPF/enp3s0.2/02:00:00:00:00:20/192.168.2.0/24
dhcpd[1263]: Listening on LPF/enp3s0.3/02:00:00:00:00:20/192.168.3.0/24
dhcpd[1263]: Sending on LPF/enp3s0.3/02:00:00:00:00:20/192.168.3.0/24
As you can see the right interface is matched. The 192.168.3.0/24 subnet is served via the enp3s0.3 interface, although the MAC address of both interfaces is the same.
Last but not least: It is possible to change the MAC address of a VLAN interface. Please use the ip command like this:
ip link set dev enp3s0.3 address 02:00:00:00:00:20