The AI seems to overestimate its war power in comparison to the player. I don't think anything can be done about that though, as its more or less a function of the player's ability to do more with less.
So with that said, imo it's a problem from the standpoint of the mid-late game (post world war period) being fun that the ai will continue to wage a stalemate war until the end of time. The ai doesn't get bored of fighting the same battle 10 times over 40 or so seasons like the player does. I can understand if it's making some progress in its war effort, but if it's merely charging its soldiers into a brick wall it seems to me that unrest level would begin to climb.
My suggestion is to implement some sort of war weariness function. An example: First notes on territories and power ratings for the parties at war would need to be taken. No effect until >50 seasons post war is declared. After that a check is performed to see if the enemy player has lost any territory. If they have => no WW effect. If they have not => check to see if difference between power ratings has grown or shrunk. If it has grown => no WW effect. If it has shrunk => increase the faction's global unrest by +3% and add a positive diplomacy point to the AI's view of the faction it is warring with. Then simply continue to perform WW checks every 25 seasons. From the player's pov, a popup could come up informing them that their faction is experiencing WW and that unrest has gone up as a result.
I realize doing it that way might make turn times too long. Also, I'm not too sure if adding a positive diplo point for the AI's view of the war faction has any effect on what it will accept to come to peace. So perhaps there is a more efficient way to implement this feature someone can think of. Anyways, just a suggestion.
I would also be curious to know if anyone else finds this to be an issue at all. Maybe I'm just being a baby here