Reverse forehands make it easier to hit a clean shot off a high ball, but if you want more penetration, you'd need a scissor kick forehand and that's pretty hard to achieve -- especially for a 3.0! I use both, but it's not necessarily a good idea for you. (A scissor kick forehand is what Federer does when he gets airborne to hit inside-in or inside-out forehands.)
For the more realistic option, I do have an idea. Generally, we catch high balls by simply raising our preparation. Instead of swinging to the ball from down your waist, make your swing very horizontal and start it even by your shoulder if necessary. In short, you just have to take your normal swing, but raise everything to the ball's level.
There are also ways to prevent that guy from moonballing efficiently. Nothing is easier to moonball that a mid-paced shot that we contact around the waist or a little higher. A good slice makes it very hard to get any spin on the ball while still getting the right height... It would take ridiculous spin to get the right height and the right pace to make a moonball annoying off a low contact. At best, a 3.0 could make a lob out of it. An other option is to force him to make adjustments. Most people are used to move from coast to coast and to hit with their foot well planted. Force him to move forward, to move backward, to adjust to different contact heights, etc. That's how pushers annoy recreational players, but since you do have a great forehand (presumably), you have more options than a pusher. These are general tips, but they can make a difference.
Depending on the moonball, you may also try to take it out of the air, take it on the rise or wait for the ball to drop. Furthermore, if your opponent is not very handy at the net and you are confident enough, you may draw him forward and hit a passing shot -- people with poor net games are easy to pass in one or two strokes.