Looks good.
Here are some notes in case you get around to implementing this before I do:
I found it very surprising that no metadata handlers seem to implement IWICMetadataBlockReader, while many of them advertise that they can be found in other metadata formats. I'm guessing that metadata handlers return child IWICMetadataReader objects from the IWICMetadataReader interface, but I haven't tested this.
It probably doesn't make sense to reimplement GetEnumerator for each decoder, and we should be able to make a common implementation based on the other methods.
We should probably implement GetReaderByIndex based on CreateMetadataReaderFromContainer, which I'm guessing expects a copy of the image stream (using IWICStream because we can't use IStream::Clone) seeked to the beginning of some metadata, or a region of the image stream, maybe depending on the container format.