Depende. El PIC necesita alimentación durante la programación. Entonces, tienes dos opciones, alimentarlo desde el programador, o desde la fuente del propio circuito. Cualquiera de los dos métodos es bueno, si el circuito está diseñado para usar ese método.
Por ejemplo, si decides alimentarlo desde el programador, tendrá que estar previsto que, en las condiciones normales del PIC tras un reset (puertos en alta impedancia y demás), el circuito no consuma más corriente que la que puede proporcionar el programador, que normalmente no será mucha. Esto a veces es poco práctico (por ejemplo, si la retroiluminación del LCD es fija, ya consumirá más de la cuenta).
Parece entonces más lógico usar la alimentación del circuito, en lugar de la del programador, pero esto plantea también algunos problemas en determinadas circunstancias, debido a que en ese caso el programador no puede activar y desactivar la alimentación, que en determinadas configuraciones es la única forma de resetear el PIC para hacerlo entrar en el modo de programación. El problema surge porque el PIC, una vez alimentado, estará ejecutando el programa que hay grabado en él, y según lo que haga dicho programa, el programador puede ser incapaz de resetear el PIC.
Una manifestación tipica de este tipo de problemas es que se graba bien el programa, pero no la configuración (sospechosamente parecido a lo que describías). Esto puede pasar porque el programador consigue poner el PIC en modo programación, y graba el programa, pero cuando intenta salir de dicho modo y volver a entrar (necesario para programar la configuración), el PIC ya está ejecutando el programa que has grabado.
Una solución que puede ser práctica, especialmente con los 16F87x, es preparar el circuito y el programa con cierto cuidado. Si sacrificas la patilla RB3 (que corresponde a la señal de programación PGM), puedes conectarla a VDD mediante una resistencia de pull-up de 10k, y hacer que tu programa, lo primero que haga sea comprobar que esa patilla está a nivel bajo (que es como la pondrá el programador), y si es así, que entre en un bucle eterno. Así te aseguras de que el PIC está en el estado típico tras un reset, que es lo que necesita el programador para hacer su tarea.