Phew it may not be as bad as I feared. The OLE exported was mostly correct, but libole2 was using the bats rather than the stated sizes to build files. This ran into trouble when we padded unused bat elements with 0 rather than 0xfffffffe to indicate unused.
MS Excel is still complaining. However, I'm starting to suspect that it is not the OLE. When I simply clone an existing xls file into a new wrapper using libgsf MS Excel is fine with it. That leads me to beleive that the problem is either with the lack of metadata (which is temporarily disabled in gsf) or a new bug in the XL exporter. We'll see. Either way it is not too bad. New releases of gsf and gnumeric to be made shortly to make sure stable gnumeric can read the generated xls from the development version.