My DD1 is 13 YO and DD2 4 YO, so not exactly the same gap, but similar.
I can understand completely how a 4 YO can annoy the fuck out of an older sibling, 4 YOs can be demanding and can't read a situation where there's tension in the air/prickly body language, and leave well alone.
But even though DD1 can be a bit impatient when DD2 expects her to get off facebook and dance with her or whatever, I just can't imagine her ever calling her an idiot or ugly
that would really concern me and I couldn't allow it just because of the long term affect it could have on DD2.
DD1 was an only for 9 years, but that would never excuse her being spiteful to a 4 YO, what you describe is your DS (verbally) using the little one as a punch bag, taking stuff out on him because he can, and that's really not on.
I'm not sure what I'd do in your situation, but something has to give and it's maybe better if you can choose what it is before it just randomly explodes?