By having it as a keyword, it need not be associated to type Any, so the compiler is free to infer the input type of the (partial) function. If it was a method of Any it would take a Function[A, B] as argument.
The practical implications are that
3 match { case "foo" => "bar" }
causes the compile error 'type mismatch'
but a (type paramerterless) matchMethod;
3.matchMethod { case "foo" => "bar" }
causes the runtime exception 'scala.MatchError'
then even if we verbosely explicitly paramerterized the types we still wouldn't get a compile error for the following situation:
"foo".matchMethod[Int, String] { case 3 => "bar" }
rather we would get the runtime exception 'java.lang.ClassCastException' as under the hood we would have to use .asInstanceOf.
The other bonus is syntax highlighting, matchs jump out in code more than yet another method, which I believe it deserves as pattern matching is such a key part of Scala it deserves special attention.
ADDITION: For similar reasons you want try catch to be a keyword construct rather than a function that takes two functions as parameters. match is then consistent with catch, which is also consistent with Java.
This answer is an expansion on Martin Odersky's, which was first pointed out by TravisBrown