I got it to work, but unfortunately, I am not very happy about the solution. Not something I can't live with, however, and overall it's good enough. Perhaps there is a simpler solution - some overlooked flag or something related to my world or terrain or something.
Anyway, one thing I tried was copy the code out of the earthball demo that dealt with the creation of the earthball and applying the earthball physics stuff to it. Didn't work - earth just hung in the air, and was passable. So, I went back to the drawing board, and modeled my main() after the earthball demo. Instead of loading a World created in WED that contained a terrain and a few miscellaneous models, I instead loaded my terrain directly with level_load, then added the earthball model via ent_create and applied all of the earthball demo physics. Aha - It worked! The earth falls out of the sky and bounces gently to my terrain.
By the time all was said and done, I had my own physics scripts and models working happily together. I now load an empty world with level_load, and add all models, including the terrain, via ent_create. Of course, it took some head-scratching and tweaking to get all of the other stuff that was working, working again, too.
So, is that it? if I want dynamically generated physics objects to work properly then I cannot use a world, complete with a terrain and static entities, pre-baked in WED?