After a bit more tinkering, it seems that the plugin/Google maps is paying more attention to the words in the address field then it does to the postcode. I'm not even sure it's using the postcode at all.
So when I only list the name of the town in the address field (because the venue is a field about a mile outside the town), it uses the high level postcode for the whole of the town and ignores the much more specific 7-digit postcode that I've entered.
BTW, if I put the postcode in the address field and not in the postcode field, then I get the same result - it points to the centre of the town.
If I use the name of the road that the field is on, the maps pin then points to that part of the road in the town - but it's a long road that goes through several postcodes, so that's not right either (its pointing at a different postcode).
I can work around this, but it's not ideal. The event has been pinned onto Google maps, and if I use the event name as part of the venue address then I do get close enough to the correct location. So now my event address is the event name, which looks a bit silly! Alternatively, if I put the postcode in both the address field and the postcode field, then it points to the right place, but now the postcode appears twice in the listing, which isn't great either.
Frustrated! Is the plugin trying to be too clever for its own good?
I can live with this, but would love it if anyone has a solution. Thanks.