So, I went through the code, and updated it all to use a relative positioning, based on the screen height required to fit 12 lines on the screen. This bit worked really well, and now all the text appears in the right place, and all the graphics are of the right size.
Update: The bug is finally fixed! You need to use S60 Python 1.3.22 or later.
Thankfully, I'm not the only person who things that the current python behaviour just won't cut it. So, there's now an un-official build of python for S60 3rd edition, which does the fonts a lot better. It doesn't have a font api that's compatible with older S60 phones, but they have fixed the default fonts (eg normal) to be the right size.
So, with Artem's phone running the un-official python 1.3.18, I was able to get nmea_info.py to render almost the same on S60 v2 and v3. All other S60 v3 users of nmea_info.py should grab the latest version (v22), make sure they have
Update:Python 1.3.22 fixes the bugs, so use that, instead of the patched version.
Update 2: If you have installed the LocationRequestor module, then from nmea_info.py v23 onwards, it can talk to the internal GPS in a 3rd edition series 60 phone, eg the N95. However, owing to the pesky platsec stuff, all the .sis files (python, LocationRequestor and nmea_info) will need to be signed with a devcert, and granted all the extra permissions that allows.