The problem seemed to be intermittent when we had the implementing class in a different package. Once we moved it into the same package it didn't happen again - but on another dev machine it worked fine while in the different package - strange.
Anyway, the DataNucleus docs do mention some non deterministic behaviour if the metadata of implementations is not experienced prior to experiencing the class with the relationship to the interface. The docs say to avoid this non deterministic behaviour specify the implementation classes in the metadata (which we have now done)
Everything seems to go just swimmingly now :) (because terms from the 1920s need a revival...)
I still think the change in the pull request would be useful to anyone else who finds themselves in this situation as it helps to narrow down the exact class+attribute causing the issue.