I believe the answer is "backwards compatibility".
Before 2.0, Dart didn't support generic methods, only generic classes. The Map.fromIterable() constructor has been around since before 2.0. Changing it to be a static method with a type parameter would be a breaking API change because any class that extends Map and calls fromIterable() as its superclass constructor would break.
Now that we support control flow in collection literals, instead of using Map.fromIterable(), I would do:
{for (var v in iterable) key(v): value(v)}
That will give you a more precise type for the element and will often be shorter too.
Cheers!
– bob