HashDict's API matches Dict's API, because HashDict implements Dict.Behaviour. The recommendation to use Dict's API over HashDict's is because in general it's always a good idea to code against the interface instead of the implementation, where Dict in this case is the interface, and HashDict is an implementation of that interface.
I'm also not sure about Sasa's point regarding performance, it's possible that's a concern, but I'm almost 100% sure that in general you should be more concerned about how you are using a Dict, instead of how you are accessing it.