So..... this issue appears to be caused by the way pins are named in the footprints for the headers I was using. The schematic symbol and footprint came from macrofab.com (for use with their house parts). The pins are named "P$x" where x is the pin number. eg, pin 1 would be named "P$1". I have no idea why they use that convention, but something about that convention seems to be causing all the trouble. I modified one of their footprints by changing to normal pin names... ie, "1", "2", etc... and the problem I was having went away. No other thru-hole footprints have the issue I was having; just the macrofab thru hole footprints.
Maybe the $ is being interpreted as some kind of variable (like how $ is used in bash or perl, for example) and making the zones connect to them? I dunno, but getting rid of it seems to fix my issue.
Now, as I mentioned earlier, the header that was on the layout before I created the fill zones doesn't have the issue. I'm not sure how to explain that, but any macrofab header I add after the zone was created has the issue.
Does this make sense to anybody??
Here is an example of what the pin names are like in their libraries: