"Less" is not a synonym of the other two.
"Small" and "less" are fundamentally different. "Less" works with "uncountable" nouns, whereas "small" works with "countable" ones. Since "evil" is uncountable, it works better with "less". Since "mistake" is countable, it works better with "small".
It would not be a grammatical mistake to reverse these, but it sounds better to do it this way. The rules that divide words into these two categories are not ironclad. For instance, you can think of "evil" as countable too. It's just a question of usage. More often than not, we treat "evil" as uncountable.