Both mean the same according to dictionaries (to destroy something ​completely), but what is the difference between the usage of these terms?

I've heard that annihilate can be used for cities and building but eradicate more for non-physical things. Is that really correct? How are these terms different for native speakers?