At least it’s an annoying misfeature. merge returns an OrderedDict because OrderedCollections has a specialized method. Presumably it’s missing for mergewith because nobody updated OrderedCollections after mergewith was sort of split out from merge, cf. mergewith not working properly for OrderedDict · Issue #77 · JuliaCollections/OrderedCollections.jl · GitHub.
A PR to fix this would probably be received favorably.
In the mean time a possible workaround is mergewith!(*, copy(a), b), assuming that the key and value types of a are sufficient for the merged result. Or you can skip the copy if it’s fine to mutate a.