They don't (`go get` won't execute anything defined in a Makefile), and the approach that the author takes to vendoring is also going to cause problems.
It's possible to have a Makefile that serves as a shim for the standard and recommended Go workflow, but it's not very easy, and it's ultimately an uphill battle. It's also not going to be cross-platform, unlike the Go toolchain.
We do use them to specify "simple" repetitive tasks in a uniform way, with some minimal amount of order defined (for instance making sure go get is called before go test, or our code for embedding version numbers into binaries for builds).
[edit] An example from one of our public repos https://github.com/MediaMath/grim/blob/master/Makefile the codebase was one of our first times writing go so we aren't terribly proud of it, but the Makefile is representative of the kinds of things we do in make.
The authors example is clean/simple. Here's an example not so clean/simple example where we needed to do more complex stuff like build for all target platforms[1].
[1] https://github.com/cloudfoundry-community/stackdriver-tools/...