Calum,
We are having this exact issue with the 3.14 API and a custom geoprocessing service in ArcGIS Server 10.3.1 to print the map. When we set layer definitions on the Dynamic Layer it will display fine in the browser, but the PDF generated by the print service will not show the annotation layers at all for these layer definitions.
if you ever found what the problem is, or found a workaround we would love to know about it.
At this point I'm wondering if this is a known bug and we should just move on for now, because we've already wasted a lot of time on this. Could there be a format issue between the for Web_Map_as_JSON json sent by the api and the REST service ?
Thanks.
In this image, you can see that the annotation layers 0 and 2 have been added to the visible layers of the Dynamic Layer. These annotations layer are not displayed at all in the PDF when we add the layer definitions shown.