Actually, that's not a band-aid. It allows strings to be generic over allocators without suffering the performance penalty of a virtual call on every malloc and free. Go's solution would be to just take the penalty of a virtual call (as interfaces require virtual calls everywhere) and try to make it up with devirtualization optimizations and/or inlining.
> After all, nobody comes into every Lisp thread demanding that Lisp grow a type-checker.
That's because making a workable type system for Lisp is a very hard problem. By contrast, generics are well known at this point.