lo que ocurre es que se resetea al valor que tiene de inicio. si te fijas, antes de sumitar el form, el valor del elemento es vacío. pero una vez sumitado toma como valor la respuesta php. para solucionar ese comportamiento en lugar de usar un reset, has de usar un button para invocar una función y eliminar el valor del elemento.
a groso modo algo como esto
Cita: <script type="text/javascript">
function borrartxt() {
document.querySelector('.form-control').value = '';
}
</script>
</head>
<?php
$texto = '22';
?>
<body>
<form action="" method="POST">
<textarea class="form-control" name="texto" placeholder="Pega aquí las palabras que quieras contar" cols="30" rows="6"><?php if(isset($_POST['enviar'])) { echo $texto; } ?></textarea>
<button type="submit" name="enviar" class="btn btn-primary" >Contar palabras o caracteres</button>
<button type="reset" name = "borrar" class="btn btn-danger">Borrar</button>
<input type="button" name = "borrar" class="btn btn-danger" onclick="borrartxt()" value="Borrar" />