So I've been doing a bit of a test on this recently as I required a 'as near as practical' square grid after printing in a recent spreadsheet I developed and thought I'd report back in case anyone else is interested in the future.
Maybe no one else is seeing the same effect, but I've come to the conclusion that setting the plotarea.width = plotarea.height or plotarea.insideheight = plotarea.insidewidth is not enough to get a square grid or circle printing circular. All the examples linked to here ultimately use one of these methods.
I found if I printed to PDF and then measured the grid that the width needed to be almost constantly 1.04-1.06 times wider, so you can simply scale the width component by this factor to produce a true square printout.
I can visibly see that its slightly out on the screen without the correction, and its pretty obvious when printed with a small enough grid. I suspect its something to do with the screen resolution, aspect ratio of monitors, DPI and what font you have defined in the normal style and possibly even your printer. This would obviously make it quite hard to produce a generic correction factor for all monitors/printers/setups depending on what is contributing to and causing the slight scale error.
I'm unsure if the scale factor is universal or different for each users specific setup as I only have one computer in the house to test on
Scaling by 1.05 is about good enough for my purposes, however I'd be interested if anyone has any suggestions to get the 'scale fudge factor' for scaling programatically depending on what it is ultimately linked to.