OK. In getting together the evidence to answer the comments by Rene and Joost, I have worked out what is happening.
You apparently cannot rename an attribute that is sent over an App Service as the original name (or at least the one that was first presented to the Published App Service) persists and then never matches up with anything on the consuming end.
I demonstrated this by renaming an attribute that previously worked and re-loading the app service. This resulted in an empty value in the consuming MF. Renaming the attribute back to the original name fixed the problem. I then added a new attribute and manually re-pointed all references to it from the old attribute. This now works as expected.
Bit rubbish if you need to re-think your naming convention part way through, but at least I now have a work-around.
Thanks Rene and Joost for showing an interest.