Alexandre,

Você pode usar trellis.focus() para escrever em regiões gráficas, veja como fica a solução agora

barchart(modelo~T4|T3 , data=teste, xlab="XXXXX", ylab="XXXXX", groups=data,
          auto.key=list(space="top", columns=3, points=FALSE, rectangles=TRUE,
            cex=0.8, size=1.4, adj=1, between=0.2, between.colums=0.1),
          col=gray.colors(3)[1:3], box.ratio=1.5, aspect=0.6, layout=c(1,4),
          par.settings=list(
            superpose.polygon=list(col=gray.colors(3)),
            fontsize=list(text=9)),
          par.strip.text=list(cex=0.9),
          scales=list(x=list(tick.number=6)),
          strip=strip.custom(bg="gray95", factor.levels=c("X1","X2","X3","X4")),
          panel=function(x, y, ...){
            panel.barchart(x, y, ...)
            panel.abline(v=(9.8), col="gray60",  lty=2)
          })
trellis.focus("page")
panel.text(0,1,"a)", adj=c(0,2))
trellis.unfocus()

Quando você passa um data.frame para o argumento data=, a lattice entende que os nomes na formula Y~X|Z e em groups= são colunas do data.frame, então você não precisa ficar usando $.

À 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
==========================================================================