Yeah, but opaque {} can only be used with pointers and does not by itself take up any space in status quo (it cannot in fact be put into structs or variables). I believe there was a proposal to allow that, but it was rejected. Here, we need actual storage for the interface, but want to make its contents inaccessible in ways other than the intended API, so I opted for a byte array.
EDIT: It was probably this discussion on Ziggit, not a proposal, actually.