A regra geral já foi exposta noutras respostas. O patronímico, que é típico da onomástica ibérica medieval, tinha por base um nome próprio (o do pai) ao qual se associava o sufixo -ez (Henrique > Henriquez; Fernando > Fernandez, etc.). O referido sufixo passou a ser grafado com -s, reflectindo a perda de sons africados e do contraste entre sibilantes no português do século XVI.
Como o consulente diz, há excepções, que têm que ver com a possibilidade de alguns nomes se abreviarem. Assim, por exemplo, Rui é uma abreviação de Rodrigo. O mesmo sucede com os patronímicos Vaz e Dias, que abreviam, respectivamente a formas arcaicas Vaasquez («filho de Vaasco») e Dieguez («filho de Diego ou Diogo»). Estas mais tarde evoluíram para Vasques e Diegues, que no fundo têm as variantes abreviadas Vaz e Dias.
Quanto a Gonçalves, trata-se de uma especificidade portuguesa, que não encontramos na versão castelhana do mesmo patronímico, que é regular: Gonzalo > González. Tal se deve a ter existido em galego-português uma forma Gonçalvo, anterior a Gonçalo; o antigo patronímico e hoje apelido conserva, portanto, o radical mais mais antigo, Gonçalv-. É de supor que em castelhano a forma González mostra a generalização do radical mais recente Gonzal-.