OK, I think I know a little bit about what's going on now.
Let me describe how I created these FP objects.
First I create FPObject1 in the normal way (I choose an area spline, define geometry and materials, define distribution, etc.). Then it's time to create another FPObject using a different area spline. So I selected FPObject1 and hit 'Clone' and this makes FPObject2. I then linked FPObject2 to the new area spline, and assigned the new area spline in the settings, etc. When I used this method, the materials that were assigned to the original FP object were not instanced to the main materials (even though the name was the same)... so the tree materials never updated when changes were made to the main materials. In total, I have seven FP objects in the scene.
Now I have just walked through each of the FP objects and assigned the materials again as instances and now they are all updating properly.