The problem is this:
How do you fix it?
Scenario:
Army #1 attacks a town at 4:30pm
Army #2 wants to attack the same town at 4:35pm
Saying "you can't attack your own faction" solves nothing since Army #1 can just quit the faction prior to attacking.
Scheduling both battles to occur would be a bad idea -- Army #1 could be a legitimate attack on the town and if they win, and the second battle starts up immediately afterwards, they would have had no time to setup their roster.
One solution would be for the devs to declare it against the rules and police it. (They have not declared it against the rules. Attacking with a wizard is not the same thing as declaring it against the rules. There should be a sticky post saying "Do not do the following things".)
Another solution:
Attacks cost gold. This gold vanishes and is lost forever. Widows and orphans fund.
Army vs army: attacker pays 500 gold
Army vs village: attacker pays 5000 gold
Army vs castle: attacker pays 8000 gold
Army vs town: attacker pays 10000 gold
Or maybe the cost could be population based. Army vs army could be based on population + number of crates, so if you want to cockblock attackers going for your caravan with 49 troops and 500 crates, it'll cost ya.
Then "delaying actions" become a perfectly valid part of the game. It's just that every time you do it, it will cost you some non-trivial amount of money. If anything, my suggested values are probably a bit low. 10,000 gold to attack a village sounds perfectly doable to me and I'm sure my clan, with 12 people in it, is not among the richest. I could see someone shelling out 10,000 gold to do a delaying action, but it's not something they would want to keep doing every day, especially if the attackers started moving against more than one village.