Oh, I didn't mean "You should use $_ instead", just "$_ is also useful."
As I tried to indicate, you should ideally use whichever will make more sense in your history later. If the command you're typing should always be applied to that file, which happened to be the last argument of the previous command this time, then use !$; if the command you're typing should always be applied to the last argument of the previous command, and it just happened to be that file this time, use $_.
It's the "Event Designators" in the bash manpage for those who are interested.