Потому что C вовсе не обязан быть быстрее любого другого языка. Бывают случаи, когда эквивалентные программы на каком-нибудь питоне работают быстрее. Это, разумеется, зависит от самого программиста, а не от языка - не существует никакой магии.
Почему в конкретно данном примере go оказался быстрее? Нужно провести сравнение байткода. Лично я вижу три узких места:
1. разные цепочки компиляции
2. вывод на экран
3. разные загрузчики
Но это всё, разумеется, ничего не значит, потому что в конечном итоге go оказался быстрее. Конечно, можно выкинуть всё "неудобное" для С, чтобы замедлить go, но это уже не будут эквивалентные программы.