Not counting access costs binary is always the best for *reading*, but that comes at the cost of expensive *writing*. B-trees are a compromise between reading and writing. The various other tree types are actually just special cases of b-trees.
B-tree also enjoys a *massive* advantage when your access block size can hold many keys. With big data this will always win.
Binary tree is a good default choice for sorted structure.
Underappreciated structure: sorted arrays (but come with big caveats).