That code could have used a value rather than a pointer.
I didn't write it, but I would guess at two possible reasons for using
a pointer.
First, in practice most interfaces are used to hold pointer values.
This is not quite the same as whether a method should be defined on a
(non-pointer) value or a pointer. The question here is whether, when
converting a value to an interface type, one should convert a
(non-pointer) value or a pointer. In practice most people use
pointers. Not because non-pointer values don't work, but just because
it's a common style.
Second, and perhaps the reason the style has developed this way, the
current implementation of interfaces is that they always store pointer
values. If you store a non-pointer value in an interface, that value
is copied into memory, and a pointer to that memory is stored in the
interface. So in effect storing a pointer value writes out what the
implementation is doing anyhow. And then when you call a method, the
code is a tiny bit more efficient if it's a pointer method, since you
can just pass the pointer from the interface rather than copying the
value. These aren't particularly good reasons, since the efficiency
cost is likely unmeasurable outside of micro-benchmarks, but they
probably feed into the general style.
Ian