Consegui resolver o problema.
O que estava errado era o seguinte, eu não estava apagando o conteúdo do StringBuffer, foi só antes de inserir algum conteúdo no StringBuffer deletar todo seu conteúdo. 
Olá Pessoal seguinte, eu criei umas taglibs para facilitar algumas coisas aqui no meu sistema.
Umas delas são para gerar comboboxes (<select>)
OK… funcionou certinho, inclusive com AJAX, quando eu seleciono um item em uma outras são filtradas automáticamente, bem bacana, mas como nada é perfeito, está acontecendo um comportamento estranho, quando eu dou refresh na página a taglib está duplicando as combos, alguém já passou por isso ou sabe o que pode estar acontecendo?
Esse é o exemplo de uma taglib que eu criei.
@SuppressWarnings("serial")
public class ComboGruposEmpresas extends ComponenteBase {
@Override
public int doEndTag() thr
ows JspException {
Contexto contexto = SessionUtil.getContexto(pageContext.getSession());
super.sb.append("<select class=\"comboGruposEmpresas\" onChange=\"onchangecombogrupoempresa(this);\">");
super.InserirPrimeiroItem();
GrupoEmpresaVO selecionado = contexto.getGrupoSelecionado();
for(int i = 0; i < contexto.getListaGruposEmpresas().size(); i++) {
GrupoEmpresaVO grupo = (GrupoEmpresaVO) contexto.getListaGruposEmpresas().get(i);
String option = "<option ";
if ((selecionado != null) && (selecionado.getId() == grupo.getId()))
option += " selected ";
option += "value=\""+grupo.getId()+"\">"+grupo.getNome()+"</option>";
super.sb.append(option);
}
super.sb.append("</select>");
super.write();
return EVAL_PAGE;
}
@Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
return SKIP_BODY;
}
}