Another difference is that if someone runs the perl command against your script then the shebang line will be ignored while "use warnings" will still be enforced. This is particularly relevant on Windows which does not use the shebang line.
My personal view is that the -w method is "old school" and these days you should be using the warnings pragma instead.