It depends if your using Dragonite for Competitive or In Game Play.
For Competitive Play I would go with Fire Punch.
Why? Because Fire Punch is an amazing move it's 75BP, 100% Accuracy and has a 10% Chance to Burn. Also it covers Ice and Steel Type Pokémon. Ice Types are 4x Super Effective against Dragonite so if you ever need to face an Ice Type Pokémon in battle with your Dragonite such as if your Dragonite was your last Pokémon it is always good to have a counter in your Move Set.
But I would recommend having Fire Punch mainly to hit Steel Types. As Steel Types have a resistance to both Dragon and Normal Type Moves so they can easily Wall your Dragonite being as though you don't have a Move in your Move Set that can hit Steel Types. If you don't have Fire Punch Pokémon such as Ferrothorn can be a nightmare for your Dragonite since it resists Dragon Type Moves, can gain HP back from Leech Seed and can damage your Dragonite when ever you attack it with it's Iron Barbs Ability.
For In Game Play it doesn't really matter as much so I'd go with Waterfall.
Why? Because Waterfall is an amazing move it's 80BP, 100% Accuracy, has a 20% Chance to Flinch and can be used to climb Waterfalls in the Game. Waterfall is also a counter to Rock Type Pokémon who are Super Effective against Dragonite.
Even though Fire Punch and Waterfall are both amazing moves I'd say Fire Punch is definitely better for Competitive Play.
If this is for Competitive Play I would recommend this Move Set:
Dragonite (M) @ Leftovers
EV's: 252 Attack, 252 Speed, 4 Special Defence/ HP
-Extreme Speed/ Roost
Hope I helped :)