Go cleans up and fixes pretty much every issue C had, and improves it in many non-obvious areas, from the syntax to the type system.
And when porting an existing project I'm not surprised if goroutines would come up that often given that they probably don't have any equivalent in the original design.
I suppose that begs the question: if you can built it in the language, should it really be a part of the implementation?
There are also other language features that make it much more usable and that are missing from C, like garbage collection.
I know Rob Pike and Russ Cox have discussed this several times, it might be worth watching this talk by rob about the history of Go's concurrency model you can find here: http://go-lang.cat-v.org/talks/
And Russ Cox's article also about this: http://swtch.com/~rsc/thread/
I'm not sure either covers exactly the reasons why it is a great advantage to make it part of the language, but they are still interesting background.