You can have a generic method, but the implementation of an abstract generic method must itself be generic:
scala> trait T { def p[A,B]: Map[A,B] }
defined trait T
scala> new T { def p[S, T] = Map[S, T]() }
res13: java.lang.Object with T = $anon$1@1f74864
Remember that unbounded type parameters are universally quantified. You're saying p is defined for all pairs of types without exception or constraint. Many S and T bindings are incompatible with Int, so you cannot just return a Map[Int, Int] where a Map[S, T] is required.
Update: Re: "So I can have non-generic implementations of generic abstract classes and traits but not of generic methods?"
You can have non-generic implementation of generic abstract classes in this sense:
abstract class C[A, B, C] { /* ... */ }
class D extends C[Int, String, Boolean] { /* ... */ }
Or like this:
class E extends C { /* ... */ }
Though that one's the same as:
class E extends C[Nothing, Nothing, Nothing] { /* ... */ }
And Nothing
is an uninhabited type in Scala.
But you cannot implement an abstract generic method with a non-generic method