This is adapted from the ssh/terminal code, but I still know what it's doing. There are two Syscall() functions in the unix version of syscall: Syscall() which takes three parameters, and Syscall6() which takes 6 parameters. The various IOCTL methods under syscall take various numbers of parameters. In this case, we probably could have gotten away with just Syscall(), since we only actually need three (fd, the request, and a pointer to the result). But Syscall6() lets you just use the same one everywhere. The actual call you're making in the end is a varargs, and it doesn't care about trailing parameters.

But the short answer is "because that's how Google did it."