If I leave a block of sand fall on a stream of water it will disrupt the water's course. A sand block can break if it falls on a torch and will probably vanish if it falls out of the world (late edit: not sure whether they vanish or not, or how sure I was about this back then when I asked this question) and a fire-ball can put fire on wood and break it. Can something similar happen with other blocks? I mean breaking them from a distance (but without TNT or explosions or a dragon/wither/creepers).
Pistons can break a bunch of blocks that can't be moved, classic example: watermelons. Distance 11 blocks (a piston can push 12 blocks at once)
About anything can break chorus plant blocks, in particular lack of end stone or chorus plant block in adjacent field - they are really flimsy and whole chorus trees collapse in a chain reaction of chorus block support vanishing.
Silverfish is a cool way to make classic blocks like stone bricks and similar to vanish. Break one, or punch a silverfish, and all the blocks are broken. I've seen a video where someone used this as a self-removing filler for a hollow structure.
If you count transformation as destruction, then lava->obsidian(with water), water->stone (with lava), ice->water (when exposed to light).
Sugarcane will break if you remove adjacent water. Unsupported spawned leaves will decay without trunk too. Lilly pad will break when the block beneath ceases to be water source too.
A bunch of burnable blocks can be burned away.
A dispenser with empty bucket will remove an adjacent water or lava source when triggered. Sponge will remove a lot of water too.
And a bunch of blocks - torches, rail, end rods etc - can be washed off by water. If they supported, say, sand, it will fall.
technically, you can by using the /setblock command. You can't do it from a huge distance, but you can from several blocks away.
/setblock X Y Z minecraft:air