Why theme lives between characters, not inside one
What a reader experiences is not a character but the space between two of them, so the same claim carried by three different pairs is what stops a theme sounding like one note.
A position can be stated, embodied, or carried by what happens to somebody, and a cast can be fully staffed on the first and starved on the other two.
If everyone in your story makes their point by talking, it'll read like a sermon no matter how good the dialogue is.
There are two questions to ask about each character. Most drafts only answer the first: which side of your story's argument are they on?
The second is how they make their case. Some say it out loud. Some just live it, so nothing needs saying. Some make it through what happens to them.
Those two questions are separate, and that's what makes this useful. You can have every side covered and still have every character making their case by talking.
In Amadeus, Salieri explains his envy for two hours. That isn't what gets you. What gets you is what becomes of him.
Randy in The Wrestler never argues his case to anyone. His body and his last dive make the whole case.
You've been taught things all three ways. Someone told you, someone just lived it in front of you, and someone's life showed you what it cost. The third one usually sticks.
So the fix for a preachy theme isn't better dialogue. Move one character to a different way of arguing. Let how they live make the point, or let how they end up make it.
What a reader experiences is not a character but the space between two of them, so the same claim carried by three different pairs is what stops a theme sounding like one note.
A protagonist's climactic choice on its own is consistent with your story's position without ever establishing it, because a second position would explain the same choice equally well.