I think it's hard to determine which HM is the "best" because the effectiveness of the HM depends on a battlers circumstances. Although the HM "surf" seems like the best HM because it is the most powerful and has a 100% accuracy rate, the move surf would hardly do any damage to a grass or electric type pokemon. Furthermore, the move surf would not be the best option in a double battle if you have two pokemon on your side. Although the move "surf" would inflict damage upon both of your enemies' pokemon in a double battle, the move would also harm your second pokemon. Assuming that you desire a strategic move with damage-dealing prowess, I believe that the HM Fly is your best option. When dealing with worthy opponents, naturally you would encounter moves of a higher caliber; moves such as SOLAR BEAM. In order to evade these powerful moves, you can use the HM Fly. Allow me to explain how you can do this. When your enemies' pokemon is charging for attacks such as solar beam, razor wind and sky attack; you can instruct your pokemon to fly into the air thus skillfully avoiding a potential K.O. Not only is Fly helpful in battles, it also allows for fast transportation. If you want to go to Pallet Town to visit your mom, why would you surf there when you could hop on the back of your favorite flightless-bird-inspired pokemon Doduo. That trusty steed.
If anyone has any feedback on what I said, please feel free to respond