If you have a sunroof and rear speakers, you can somewhat access the roof rack holes from the inside without removing the headliner. Here's what I did:
1. Rear holes. Remove rear speaker covers and speakers. You can pull back the insulation to expose the holes. The access is not direct enough to weld, but there is enough space to place a backing plate or perhaps some fiberglass. I cut a small circular piece of scrap metal, piled on some fiberglass reinforced body filler, and pushed it up against the inside of the roof to cover the hole. You can then smooth the body filler from the top side.
2. Front holes. This is a bit more difficult. Open the sunroof and fish a string from the outside of the roof rack hole then forward along the sunroof until you can grab it. Then run the string through a small hole you've drilled in a backing plate and tie a stopper knot. Apply your choice of panel adhesive, fiberglass reinforced body filler, JB Weld etc. to the backing plate. Pull the string from the outside and the backing plate will travel along the sunroof top until it cinches up to the roof - patching the hole. Smooth the body filler from the top side. Detailed CAD drawing below.
For the rear holes I was able to get a Dremel tool with a wire brush to do some surface prep. For the front holes a used an acetone-soaked rag on a long stick that I used to clean the underside of the roof the best I could. The patches have worked for a few years with no issues. I was a little concerned about thermal expansion and contraction, but it's been from the mid 20's to 120 degrees with no problems.
View attachment 4047269