While surfing the available programs at ZDNet Downloads, I stumbled across Poster - "the award-winning program for making big posters, signs, banners, and murals, and enlargements." It was listed as "free to try" (but $18 USD after the first few posters), so I thought to give it a spin.

The program starts with an ugly screen displaying examples of what it can do, and reminding you that you can only print a few posters without registering (i.e., paying)...
Click Start POSTER to proceed.

The program gives you some unexplained choices. I could have chosen Tutorial, but I bravely picked Custom Size.
The program pops up a box, asking me to confirm my printer's paper size (8.5" x 11"). Then comes the Custom Size Wizard.

As the small print explains, the trick here is to pick a width that is 1 inch wider than your desired result (to allow for ½" margins). So the right answer is "49" for width; I make a wild guess for the height...
After you press "OK," a box pops up telling you how big your poster will be - and something about a scale factor. I don't know yet what that is...
Then you get another pop-up box:

I pick Photo Enlarger as the most likely of the various mysterious choices. A pop-up box then asks me if I want to load a file (which I do) or read from a camera or scanner.
Then another box asks me how wide I want the photo to be displayed. I want my map to be four feet wide, so I type in "48" (for inches).
Yet another box asks if I want a add a "Mat" to my picture. I have no idea what that is (maybe I should check out that tutorial...), so I select "no."
Which finally gets me to:

The poster display - and my poster appears to be done! I can see at the top that it's already 48 inches wide, just what I wanted.
So I try to print it out...

...and I get this monstrous print options box. I think what I did was type in the mysterious "scale factor" from earlier into the Custom Sizes: Scale Factor box, and click Print.
Here's what the results look like:

I know the tape measure says 47 inches, but don't let that throw you - I didn't read the small print the first time around, and put in the wrong paper size (no margins!).
Poster is a bit cryptic to use (though I blundered my way through!), but allows you to take a scenario map as a graphics image and print it to a precise width. No distortion problems noted. Requires registration after the first few posters.