The best I've come up with so far:
The OPC Foundation specifies an XML format for defining the data attributes, services, events, etc. of a device (see OPC Unified Architecture eBook - Mappings section - for more information), which can then be mapped by a server to provide the client with access to the remote properties and methods supported by the device. However, this is not a direct solution, because it is actually a third alternative and completely incompatible with both EDS and XDD formats.
On the other hand, it does provide a 'standard' format, commonly used by my end customers, that I can use to define my device, which I can easily serialise and deserialse in my desktop application and use to generate 'Object Dictionary' C source code for my embedded application.
It will then be necessary for me to define an interface that contains methods for serialising the device description objects, and provide an implementation of that interface in each of my Modbus and CANopen assemblies.
It's going to require a little more work than I originally hoped, but that's what I get paid for. :-)