but i am thinking about some scenario that maybe a miner for some other reasons (maybe to create a bigger mempool and a bigger fee war) does this.
Solving blocks costs quite a bit of money. You need to purchase the hardware, you need to power the equipment, and you need to keep the equipment cool and maintain it.
If you aren't taking all the revenue that you can, then you will be losing money for each block you attempt to solve. Meanwhile all those transaction fees that you don't collect get collected by the other miners (which allows them to afford more equipment and more electricity).
As such, failing to include transactions costs you money and increases the hash rate of all the other miners. As the hash rate increases, the difficulty increases and the "attacker" can't mine as many blocks (since they have an ever smaller percentage of the global hash power).
Since the "attacker" isn't likely to have more hash power than the rest of the entire world combined, blocks with transactions will continue to be solved in the meantime, so the attacker isn't going to be able to stop bitcoin transactions from confirming.
is there any way to stop it?
While the number of confirmed transaction per hour might drop a bit for a short while, eventually the attacker runs out of money or becomes irrelevant due to insufficient hash power.