Está bien q quieras dividir el texto en 3 partes iguales tal y como lo expones.
Lo q deberías hacer después de definir el valor de los 2 primeros cortes es buscar el siguiente (o anterior, según tu criterio) espacio, x ejemplo con la función
strpos a partir del trozo de texto seleccionado y así haces los cortes a través de un espacio. Espero haberte dado una orientación de lo q sugiero.
X cierto, para la última celda no es necesario q especifiques la variable $fin ya q sin ésta te pillaría hasta el final igualmente.
Saludos.