Directly connecting a shader graph property to an output doesn’t work; the graph uses the property’s default value instead of using the material property.
A workaround is to route the property through a swizzle (or any other kind of) node.
It appears the incorrect USD being generated is:
float inputs:opacity.connect = </MaterialX/Materials/USD_MyShader.inputs/_Property.outputs:out>
when it should be:
float inputs:opacity.connect = </MaterialX/Materials/USD_MyShader.inputs:_Property>