A gnls() não entende a[Peixes], b[Peixes], enfim, separar parâmetros por variáveis indicadoras não é como na nls(). Você deve fazer isso por meio do argumento params= da gnls(). No seu CMR, o m3 ficaria assim

m3 <- gnls(Peso~a*(1-b*(exp(-c*Tempo)))^3,
           params=list(a+b+c~Peixes),
           weights=varPower(), data=dados,
           start=list(a=c(300,0), b=c(10,0), c=c(0.05,0)))

Veja a documentação da função para maiores informações.

À disposição.
Walmes.

==========================================================================
Walmes Marques Zeviani
LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
Departamento de Estatística - Universidade Federal do Paraná
fone: (+55) 41 3361 3573
VoIP: (3361 3600) 1053 1173
e-mail: walmes@ufpr.br
twitter: @walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================