You should not have closed your bank account while there was a check outstanding. If the bank would charge you for that, call or write the IRS and explain the situation, and replace it with a check written on your new account.
You're right in that the IRS shouldn't have held your check and then dunned you for the consequences. Still, you should have foreseen this and forestalled it.
Can you prove you mailed the check on time? Did you get a receipt? (I always make the IRS sign for my returns, unless they owe me and I file far enough in advance that I'll get my check before any deadline--then if it doesn't come, I can refile. E-filing makes that easy.)
I'd say: chalk it up to experience. Just pay. Don't let the unfairness of their neglegence ruin your day; you have a life to live, and they don't care.
Many years ago, many employees in an IRS office were caught throwing people's returns in the trash. It was the office to which I sent my returns. I wasn't effected, but ever since then, I've taken precautions to prove they received my returns. It costs a bit, but it's way cheaper than it would be if they tossed (or innocently lost) my return.