C18 es el antiguo compilador de Microchip, y XC8 es el nuevo compilador de Microchip que compraron a HiTech (o algún nombre así, en fin, el compilador australiano).
XC8 tiene el soporte actual y es con lo que Microchip va a seguir adelante. Si estás empezando desde cero con PICs, entonces esto es probablemente lo que quieres.
Sin embargo, hay algunas cuestiones que hay que tener en cuenta de cualquier manera. XC8 no implementa una pila de software. También realiza su propio enlazado utilizando un formato binario incompatible con el de C18 y MPASM. Si planeas mezclar C y ensamblador, y particularmente si tienes módulos MPASM existentes, o esperas obtener alguno de otros, entonces aléjate de XC8.
Por otro lado, el C18 también tiene sus problemas. Mientras que el generador de código parece ser robusto, algunas de sus estrategias de cómo utilizar el hardware del PIC 18 son "menos que brillantes". Implementa una pila de software, pero eligió un diseño que requiere el modo de direccionamiento pre/post inc/dec que el PIC 18 no lo hace tener. No hay duda. También reserva dos de los tres registros FSR para su propio uso. También utiliza un modelo de pila limpia para las llamadas a subrutinas. Esto significa que las subrutinas no pueden eliminar los datos de la pila con los que han terminado antes de llamar a otras subrutinas. El resultado es que la pila necesita mucho más espacio del que debería.
Personalmente, me quedo con MPASM en los PICs de 8 bits. He utilizado C18 en el pasado para algunos proyectos mixtos C/ASM, pero eso fue sólo porque recibí el código de esa manera. Siempre fue más problemático cuando el compilador estaba involucrado, en comparación con un proyecto de MPASM puro. También tengo muchos subsistemas escritos en MPASM ya en el disco, por lo que en su mayoría sólo tengo que añadir la lógica específica del proyecto. Cosas como los manejadores UART, el dispositivo USB, la pila TCP/IP, y muchas otras facilidades ya están ahí.