Vamos a ver ... yo creo que el error no está propiamente en el oscilador, ni tampoco en el PLL ... sino en la resolucion de la operacion:
Simule la siguiente operacion:
#define FCY 36850000UL
unsigned long d = 250;
d = d*(FCY)/1000;
con resultado d = 622565
es decir ... en vez de 9212500 estamos colocando 622565 .. obteniendose asi 16.89 ms aproximadamente en vez de 250ms ....
Analicemos la situacion, un unsigned long permite representar números de 0 hasta 4294967295 .. que son 32 bits ..
La multiplicacion de 250 x 36850000 = 9212500000 ... esto es mad del doble de lo que puede representar un
unsigned long, lo mejor es primero dividir FCY entre 1000 y luego multiplicar, pero el micro esta haciendolo al reves ... primero FCY por 250, ocurre desborde y luego divide.
Por lo que efectivamente el problema no es de el oscilador ni el PLL sino de resolucion de las operaciones matematicas ...
En vez de __delay_ms(250); haz el intento con 10 veces __delay_ms(100);
Tambien podes verificar con el simulador y la ventana de WATCH que efectivamente el 9212500 no está siendo calculado correctamente.
Saludos!