How to model and report on unintentional underpayment and overpayment?
With respect to the overpayments, I don't know whether this will fit standard British accounting practices but I'd be inclined to create a separate financial type for the overages - a holding fund, if you will - and record one payment for the membership fee and one for the overage.  They could then add an adjustment transaction the following year to move those funds from the overage account to the subsequent year's membership fee; that would make what happened and why abundantly clear to any auditors who review the financials later.  That would also enable searching/reporting on that financial type.  (I have at least one client that does this when they receive overpayments.)

Regarding underpayment, perhaps the membership could be kept in pending status until the total amount has been collected; those pending members could be added to a smart group that could be used to filter contribution reports to find how much they've paid toward their membership, send email reminders, etc.

That may not get you 100% toward where you want to go but hopefully it's a start.