Hashtable routines are far easier to write and debug than balanced binary tree routines.
Of course there are open source implementations available for both. But I would guess it is easier to write your own hash function than learn to use somebody else's, and easier to learn somebody else's B-tree routines than to write your own.
So we live in a world with O(N) hash implementations and O(1) B-tree implementations, for N programmers.