Traditional methods try to define noise mathematically so it can be identified and reduced. The problem is, in order to make the mathematics manageable, developers have to drastically simplify the models they use.
As a result, the device can’t tell the difference between noise and speech. Either they amplify everything, including the noise, or they try to cancel the noise but end up reducing the speech too.
In contrast, machine learning listens to a lot of real speech, a lot of real noise, and a lot of speech mixed with noise until it learns the difference.
This is more like how humans learn to separate speech from noise: from examples. Which is exactly what HeardThat does.