problem not in ex42, because in case of dhcp relay ip addresses served from dhcp server, and you should have configured linked pool on dhcp server so when first pool in exhausted it should start allocate ip addresses from second pool. Which dhcp server do you use ?
First things first - You are not using DHCP relay, You are using BOOTP helper. The difference is that JUNOS BOOTP helper is stateless/does not keep track of forwarded requests whereas JUNOS DHCP relay does.
Secondly, if I understand the scenario correctly, when 192.16.108/25 subnet is exhausted, then DHCP server does not dish out IPs for next subnet (be it 172.22.18.1/26 or 184.108.40.206/26)?
If yes then the problem is likely that EX4200 always uses an IP from 192.16.108/25 subnet as giaddr and Your DHCP server looks for giaddr to select a pool. Please add following knob to force EX4200 using secondary IPs as giaddr, re-test and report back:
set forwarding-options helpers bootp interface vlan.12 apply-secondary-as-giaddr