Found the answer - I added this to the main activity which extends Droidgap
public void onReceivedError( int errorCode, String description, String failingUrl) {
super.loadUrl("file:///android_asset/www/offline.html");
return;
}
In this case I included an offline.html file to display an offline message, with a try again button which attempts to redirect to the remote index page. If the webview has issues loading that remote page it will gracefully fall back to the local offline.html page until it can cache the remote files.
No nasty 404 pages, nice!