I feel like I've covered this one previously, but here goes.
The point to "attack" was to let Moat refer to it. This is an old trick. If the original game didn't have "attack" and at some point I wanted to add Moat, it would be messy. You can cobble something together but it's not great. Probably I would just do it over multiple cards instead - Watchtower for Cursing although it also covers discard although not by letting you not discard, Market Square for trashing, after-the-fact stuff like Mystic for Spy. But if I stick on this label "attack," suddenly I can just say, bam, stop attacks. And I wanted Moat. So I did that.
It has to be timed for when they play the card, before it does anything, because man, who knows what complex things that card will do. This means that cards that have attacking as an option, e.g. Pirate Ship, end up letting you Moat them before they decide, and they may not even end up doing anything to you. Which is different from if I say Watchtower a Curse you're giving me. But that seemed like something I could live with.
It has to be clear what happens when you Moat. This ruled out putting "attack" on Masquerade.
And finally some things can hurt another player but don't have much spirit of attacking to them, like Council Room. I always say, Moat doesn't have a responsibility to stop every bad thing possible from happening to you. It doesn't stop them from buying Province, that's a big one. So Council Room is not an attack. It would look weird, and would slow down the game, as you thought, hmm is there some reason not to draw the card this time. Tribute meanwhile refers to the top cards for information; it has to get that information to be playable, we can't have someone Moating it. It might feel like Moating a Spy to you, but to the guy with Tribute it's like you Moated his Gold.