You're absolutely correct on both points: McClean is perfectly entitled to refuse to wear a poppy on his shirt on principle (Imo it is then up to his club to decide what action, if any, to take against him): He has also taken no end of imo unjustified abuse for his decision. However, there is a but ...
McClean plays the innocent victim in all this. He proclaims himself to be a 'man of peace' but wears a black balaclava in a photo with his kids. He protests that he didn't mean anything by it but accepts that it was a mistake. Ok, but what's your favourite song, James? Ah, that will be the one glorifying armed struggle against the English. No doubt, he just likes the tune. Nothing to do with the lyrics.
And he's not anti-British - imo the use of 'British' rather than 'English' says something - however, he cannot bring himself to respect the playing of the UK national anthem; he has to turn away in a show of disrespect.
It's also not as though he puts his principles above his career. He plys his trade in England and played for Northern Ireland until senior level even though he doesn't believe the country should exist. (He stated that he never had any intention of playing for them at senior level. Well, that's alright then).
Imo he's just a hypocritical bigot. Rant over (for now at least).