Cita: ¿Alguna explicación de por qué no estoy en el contexto adecuado?
La función imprimir_categorias() no es un método del objeto en cuestión, y por ende $this no existe dentro.
La función imprimir_categorias() existe en el contexto global, pero dentro de ella el contexto se convierte en local y el ámbito de variables no es el mismo.
En las demás ocasiones dónde si te funciona es justamente por lo que dijo @GatorV antes, si haces el include dentro de un método entonces $this si estará accesible para el contexto global de dicho include, pero no así para las funciones pues dentro de ellas el contexto es otro.
En dado caso en el punto que buscas ejecutar dicha función ahí tienes disponible $this, entonces bien puedes pasar el objeto como argumento.
Código PHP:
imprimir_categorias($this);
Qué obvio, dentro de la función debes usar el nombre de la variable que contiene al objeto y no $this.
Código PHP:
function imprimir_categorias($objeto){
return recorrerCategoriasPadre($objeto->crearArbolCategorias());
}