I like the single 'OPeNDAP' service idea with the requested foundation service encoded in the request message. I wonder if the DDX should contain a more generic request message rather than one specific for the Blob, e.g.,
</Dataset>
...
<RequestMsg SrvcURL="http://hostname/axis/services/OPeNDAP"
dataSetName="data.set.name">
<Constraint>
...
</Constraint>
</RequestMsg>
</Dataset>
That way it doesn't limit the type of request a user can build from the DDX info (or rather, it doesn't give the appearance of limiting the users request).