No has metido en el bucle while(1) la lectura de RA0, no va a cambiar nunca, con el valor que entre al bucle se quedará eternamente.
Lo raro es que con cualquier opción te haga algo, porque no hay ninguna instrucción en el programa para leer el puerto A, solo has configurado que sea de entrada, eso no basta para leerlo.
No necesitas el ELSE, puesto que los LED siempre acaban apagados, pulses o no pulses. La función main() no precisa un return, salvo que el compilador sea tan quisquilloso que lo exija.
Esos delay sobran si no quieres que te ralenticen la velocidad de conmutación del pulsador, excepto si la misión del programa es hacer parpadear el LED mientras se mantiene cerrado el pulsador. Mejor usa un timer y una interrupción para esa tarea.
De momento prueba con algo así:
#define BOTON_PULSADO PORTAbits.RA0
void main(void)
{
TRISA=0b11111111; //Configurado como entrada
TRISB=0b00000000; //Configurado como salida
CMCON=0b00000111; //Apaga comparadores: Entradas digitales
PORTB=0b00000000;
while(1)
{
if(BOTON_PULSADO)
{
PORTB=0b11111111; __delay_ms(300);
PORTB=0b00000000; __delay_ms(300);
}
}
}