I can't think of any valid technical reason that interfaces have to have names defined.
I can easily see a situation where the names are auto-implemented like the backing members for auto-implemented properties are today.
However, I think that there are probably 3 main reasons why they have been needed:
1) It was probably substantially easier to implement interface validation in the compiler using the same rules as actual methods. Since it was only relatively recently that auto-implemented properties were introduced, I suspect this is a non-trivial compiler change.
2) For those languages that support auto-creation of the interface members in the implementing class (i.e. VB), it is probably much easier to create the interface implementation using pre-defined names than trying to create names on the fly.
3) Since an interface can be exposed outside of the defining application, names remove the ambiguity associated with an ill-defined interface.
For example, attempting to implement an interface method of:
void Foo(string, string, int)
Would most likely lead to substantially more confusion than your self-documenting example. However, this is really more of an interface usability issue than a technical one, although one could argue that if the interface is unusable, there is an underlying technical issue.