My understanding is that bison can be convinced to output some static tables which the Go authors munge into some C source (with awk).
These tables allow the Go parser to generate more useful and accurate error messages. I believe using bison is not mandatory if you don't mind hacking the code a little, but you won't get the nicer error handling. This is educated guesswork from looking at the code a few months ago, please don't treat it as gospel. -Steve