That was the issue. Both production and test sites had an email field in jos_comprofiler and it was set as a system field. This was causing the profile page to display email from jos_comprofiler, but correctly storing to jos_users any changes.
The original problem was that there were only email addresses in jos_users, so no email address was being displayed in profile.
Having now removed the offending field directly from the table (as CB Field Manager won't delete system fileds)and other tables, then running CB Tools on the database it now functions as expected.
Many thanks for your help, even if it did puzzle you!