I'm not sure about what happens if I use MXD doctor after creating a new map document with a working dynamic link to service layer credits.
Dragging over layers doesn't fix it (service layer credits will be blank in the old MXD).
I have noticed that the problem is specific to data frames existing in the old MXDs. If I create a new data frame within the document and add a basemap to that, service layer credits will display correctly.
I have a lot of old templates and maps that need to be updated - would prefer not to have to create a new data frame in every one, copy over features, resize and set extent, and re-do the legend!