Andrew,
I assume that when you statically set the IP manually and it sees the ZD, you mean that you set it so the "other" range. This as you say indicate that all the required port are open.
When the AP get it's IP from the other range it needs to be told what the ZD's IP is so it would know to talk to the GW or not. As you already found in this configuration you need to do one of two things:
1) DHCP option 43 so, just like when it's statically configured it will know the IP of the ZD and know that it's out side the APs subnet so need to communicate to the ZD via the GW.
2) Without DHCP option 43, the AP will by default look for "zonedirector" or "zonedirector.domain" and if an AP looks for the ZD and DNS returns an IP of the ZD, the AP will again know if the ZD is in it's subnet or not and if not will need to communicate with it via the GW.