The factory frame has plenty of holes, but they get plugged up with mud, sticks, rocks, goo, and scale over the years (especially the ones in the bottom that would drain). I remember seeing a picture where AMC had CJ-7 frames stacked up outside waiting to be brought in for paint and assembly, and there was already flash-rust starting, so these things literally came from the factory with rust.
As noted, the only way to do it right is to have the interior of the frame cleaned and coated.
As for me, rather than bother with anything produced by AMC, I went with a new TDK frame and had it galvanized. Since the inside of the frame won't see any rocks scraping across it, I figure this will save it from rusting inside. The outside I went overboard and did a full POR-15 coating: Marine Clean, Metal Ready, 3 coats of POR-15, and 2 coats of their Chassis Coat. This is as much just to protect the galvanization and make it look like a "normal" frame again as much as anything else.
I also cut up the front end of my old CJ-7 frame (the frame had all kinds of rust, cracks, and damage over the years that I finally gave up on repairing). For some reason, the torch kept giving me fits in the bottom half, which I didn't understand until the frame was cut and I discovered it half full of dirt. For an old frame that has seen offroad use, or salt, I'm not sure it's actually possible to get it completely down to metal on the inside so you can get a perfect coating. Perhaps a coating of Naval Jelly on the inside would help as well?