Кажется, основная причина говнокода, как и любой другой плохой работы — это когда делают абы как, потому что у исполнителя нет никакого желания развиваться в своей области, и он делает так, чтобы быстрее отделаться от работы, а не чтобы было все грамотно и правильно.
Если же говорить о корпоративном говнокоде, то там включаются в игру и другие параметры — тупость мендежеров, вечные изменения в ТЗ, сжатые сроки, нет возможности отрефакторить то, что уже сделано, потому что это время и деньги, а нужно бежать вперед, а рефакторить нужно, потому что изначально была плохо продумана архитектура, или же продукт начал расти туда, куда не планировал, поэтому приходится костылить. Ну и т.д.
Думаю, надо к этому чуть более философски подходить. Костыли и говнокод — неизбежная данность современной коммерческой разработки.