I think the actual issue may be related to something we're seeing with preboil volume/OG. It appears preboil OG is calculated based on the thermally expanded volume.
If you take the preboil SG, multiply by preboil volume (displayd at 150degF), then divide by OG you will get your cooled post boil volume. However; you measure preboil SG "at temp" which means you cool it down... so the volume is really 3% smaller. Your SG is 3% "off" here due to the shrinkage calculation expanding the volume of preboil wort.
Set shrinkage to 0% and watch your preboil SG go up by a few points (5-6 points on a 1.070ish beer). Now multiply preboil SG times preboil volume (this will be cooled volume, notice it's smaller now), divide by OG and you see the cooled volume matches.