As of the 8th Generation of Pokémon, here are the top 20 heaviest:
Cosmoem and Celesteela are tied for the heaviest with a weight of 2,204.4 lbs.
Primal Groudon is the 2nd heaviest and weighs 2,204.0 lbs.
Eternatus and Groudon is the 3rd heaviest and weighs 2,094.4 lbs.
Mega Metagross is the 4th heaviest and weighs 2,078.7 lbs.
Mudsdale is the 5th heaviest and weighs 2,028.3 lbs.
Guzzlord is the 6th heaviest and weighs 1,957.7 lbs.
Stakataka is the 7th heaviest and weighs 1,807.8 lbs.
Melmetal is the 8th heaviest and weighs 1,763.7 lbs.
Zamazenta is the 9th heaviest and weighs 1,730.6 lbs.
Altered Forme Giratina is the 10th heaviest and weighs 1,653.5 lbs.
Mega Steelix is the 11th heaviest and weighs 1,631.4 lbs.
Dialga is the 12th heaviest and weighs 1,505.8 lbs.
Copperajah and Orign Forme Giratina is the 13th heaviest and weighs 1,433.0 lbs.
Zygarde Complete Forme is the 14th heaviest and weighs 1,344.8 lbs.
Metagross is the 15th heaviest and weighs 1,212.5 lbs.
Stonjourner is the 16th heaviest and weighs 1,146.4 lbs.
Avalugg is the 17th heaviest and weighs 1,113.3 lbs.
Hoopa Unbound is the 18th heaviest and weighs 1,080.3 lbs.
Dusk Mane Necrozma and Snorlax is the 19th heaviest and weighs 1,014.1 lbs.
Heatran and Primal Kyogre is the 20th heaviest and weighs 948.0 lbs.
For the Heavy Ball, here are the modifiers for SM:
-20 if used on Pokémon weighing at most 220.2 lbs.
No modifier if used on Pokémon weighing between 220.5 lbs and 440.7 lbs.
+20 if used on Pokémon weighing between 440.9 lbs. and 661.2 lbs.
+30 if used on Pokémon weighing at least 661.4 lbs.
(So, if you use a heavy ball on one of these Pokémon listed above, there is a great chance that it'll go in it.)
Source