すみません.このsubjectSchemeの書き方は私があまりに難しく考えすぎていたようです.次のようにすると問題なくoXygenで動いてくれます.
<subjectScheme>
<subjectHead>
<subjectHeadMeta>
<navtitle> Constraint @outputclass for fig </navtitle>
</subjectHeadMeta>
</subjectHead>
<subjectdef keys="left">
<topicmeta>
<navtitle>Floats left</navtitle>
</topicmeta>
</subjectdef>
<subjectdef keys="right">
<topicmeta>
<navtitle>Floats right</navtitle>
</topicmeta>
</subjectdef>
<subjectdef keys="outputclassFig">
<subjectdef keys="none">
<topicmeta>
<navtitle>No float</navtitle>
</topicmeta>
</subjectdef>
<subjectdef keyref="left"/>
<subjectdef keyref="right"/>
</subjectdef>
<subjectdef keys="outputclassFigGroup">
<subjectdef keys="auto">
<topicmeta>
<navtitle>Auto (Same as previous)</navtitle>
</topicmeta>
</subjectdef>
<subjectdef keyref="left"/>
<subjectdef keyref="right"/>
</subjectdef>
<enumerationdef>
<elementdef name="fig"/>
<attributedef name="outputclass"/>
<subjectdef keyref="outputclassFig"/>
</enumerationdef>
<enumerationdef>
<elementdef name="figgroup"/>
<attributedef name="outputclass"/>
<subjectdef keyref="outputclassFigGroup"/>
</enumerationdef>
</subjectScheme>
ちゃんとoXygenでも候補には期待したものが現れます.例えばfigだったら、none|left|rightです.
問題はDITA-OTのようです.最新のDITA-OT 2.3.1でやると次のようなエラーが出てしまいます.@outputclassのleftとrightを有効な値として認識してくれないようです.
Description: [DOTJ049W] The attribute value outputclass="right" on element "fig" does not comply with the specified subject scheme. According to the subject scheme map, the following values are valid for the outputclass attribute: none
Description: [DOTJ049W] The attribute value outputclass="left" on element "fig" does not comply with the specified subject scheme. According to the subject scheme map, the following values are valid for the outputclass attribute: none
Description: [DOTJ049W] The attribute value outputclass="right" on element "figgroup" does not comply with the specified subject scheme. According to the subject scheme map, the following values are valid for the outputclass attribute: auto
oXygenはちゃんと理解してくれても、DITA-OTの方はダメということは、subjectSchemaによる@outputclassのバリデーションなんて世界で誰もやっていない(というかそもそも期待していない?)のかもしれません.よくわからないのでとりあえずDITA-OTのプロジェクトに障害報告を出して聞いてみたいと思います.