A little bit of history:

1. I had started using the gocheck library when I first started using Go, because I was interested in Hamcrest-style check mechanisms.  In retrospect, this was a bad idea.  What was even worse was that the table-driven testing document had not been articulated at that time, and I had thusly never read it.  I often had an aversion to data-driven testing due to maintainability and brittleness, but Go's table-driven form seemed like a sensible compromise, so I have begun using that for most new tests—not doctrinally but where practical.  Knowing what I know now, I would stay away from gocheck in anything new.

2. gocheck's behavior is non-obvious for folks on the outside.  I had wanted to keep the named return parameters purely for builtin documentation for new users.

3. Elsewhere in the code, I have chosen to retain named return values on a case-by-case basis for documentation.