Generally I have been using multiple view controllers when I display table views. I use a UIViewController subclass to controller the whole view and any bars or buttons (anything not table view related). Then I create a UITableViewController to control only the table.
This has several effects:
First, it allows me to encapsulate behavior much better. The UITableViewController is much cleaner and portable.
Second, you get a real UIView to deal with issues like the problem you are having. It seems like more work, but allows greater customization. You can do whatever you want for the background.
Third, It allows me to use a XIB for the main view much easier, without worrying about the UITableView content (which may be network loaded or not, or have other loading issues).
So my suggestion, would be your first solution. But you should do this all the time, not just when you think you will need the additional flexibility. That way it is already in place.