Thanks Rob. Have done another dig and found something that I think better put it here.
The highlight works for feature layers because of FeatureLayerView has a method highlight.
E.g. const highlightFeature = featLyrView.highlight(feat.attributes["OBJECTID"]);
To remove, use highlightFeature.remove();
Still not sure where that highlight graphic is stored, anyone can shed some light on this?
In contrast, for map image layers, the corresponding layer view has the declared class of "esri.views.2d.layers.MapImageLayerView2D", which simply doesn't have this highlight method. This is probably the reason no auto highlight on image layers.