Woah, there. What you're saying contradicts itself. You say "single subnet" in one point, but then "VLAN each site" in the second point. Then you say "the networks will NOT be routed". Are you sure you know what you're saying here?
Typically 802.1q VLANs are deployed in a one-to-one relationship with IP subnets. Each 802.1q VLAN acts as an independent Ethernet broadcast domain and, as such, broadcasts from one VLAN (like, say, a machine ARP'ing for another machine in the local subnet) won't be forwarded between the VLANs. Splitting a single IP subnet across multiple VLANs requires a "smart" bridge that can do proxy ARP.
How are you planning to get ARP to work between these various VLANs?
If you really want to eliminate "cross-site 'chatter'" then what you really want is a subnet for each physical location, a router at each location connected to the "MAN" to route traffic to the other locations, and "ip-helper" functionality in each router to forward DHCP requests from the various locations to the central DHCP server.
What it sounds like you don't want is a single big subnet with a bunch of bridges running proxy ARP, in my opinion. Your DHCP inquiry really, really speaks to an underlying desire (though you don't know it) to have per-location subnets with DHCP scopes for each.
To speak to your question specifically re: DHCP: A DHCP "scope" is a range of IP addresses and options that a DHCP server will "hand out". The DHCP server chooses the scope to choose an address based on either the network interface the request is received from (if it's a broadcast request) or the address of the DHCP relay agent (if it's a relayed request).
Some background: Best way to segment traffic, VLAN or subnet?
DHCP scopes and switch VLAN's aren't directly related to each other and as such there's no interdependence or interaction between them. The DHCP server will assign an ip address from the scope that corresponds to the subnet that the server is on, except in the case where a DHCP relay agent is in use to relay DHCPDiscover packets from remote subnets. In the case of remote subnets where a DHCP relay agent is in use, the DHCP relay agent forwards the DHCP client broadcast packet as a unicast packet to the DHCP server with additional information (contained in the GIADDR field), which the DHCP server uses to assign an ip address from a scope that corresponds to the GIADDR field value in the DHCP relay agent packet.
http://www.ietf.org/rfc/rfc2131.txt
Best Answer
That's not expected behavior, so it makes me think something more complex is happening than a simple broadcast being received by the DHCP server.
When the DHCP server receives a layer 2 broadcast DHCPREQUEST it will fulfill that request out of a scope that corresponds to the subnet of the interface the DHCPREQUEST was received on, just like you expect. When it receives the request as a layer 3 unicast from a DHCP relay agent (with the GIADDR address set) it will fulfill the request out of a scope with a subnet that includes the GIADDR address.
I'd sniff the traffic coming into your DHCP server (with Microsoft NetMon or Wireshark) to be sure that the request really is arriving as a layer 2 broadcast.