"Refrain" feels like something to use about "verbal behaviour", whereas "avoid" feels like it's about something physical. Is it?
No, of course they are not interchangeable for everything. They are different words. Two different words are by definition not interchangeable for everything.
Beyond that, refrain from refers to not doing something. Avoiding something is not the same. Avoiding doing something is less strong/absolute than refraining from doing it.
You can avoid overeating, but still overeat sometimes. If you really do refrain from overeating then you do not overeat, period.
A better synonym for refrain from is abstain from, not avoid.
It's also easy to get avoid confused with a similar word, evade.
Refrain is to resist doing. Avoid is to stay clear from.
"To refrain" is to hold something back. In modern usage it's used purely to refer to holding oneself back. "He refrained." means he stopped himself from doing something and "She refrained from smoking." means she stopped herself from smoking. There no particular connotation of verbal action.
"To avoid" is broader. It can mean abstaining from an activity, but it can also mean trying to remain away from something which need not be an activity, or if it is an activity, need not be performed be the subject.
"He refrains from dancing." means he doesn't dance.
"He avoids dancing." could just mean he doesn't dance or it could mean that he stays away from people who dancing as well.
"Refrain" can also be used as a noun to mean something which is repeated: typically either repeated section of verse like a chorus in a song or a commonly repeated saying.