I would highly recommend C over BASIC or assembly. Assembly is too time consuming (anyone who says otherwise has obviously not programmed in other languages) and CPU specific, and BASIC is not really that transferable either, in my opinion it is a dead language (apart from some microcontroller compilers and interpreters, the only other thing that uses BASIC is Visual Basic, enough said!).
Every platform typically has a C compiler, so it is the most transferable language you can learn. You could be writing programs for your PC too with knowledge gained about C.
I also prefer C18 compared to Hi-TECH C (I presume XC8 is the Hi-TECH 18F compiler re-badged). The libraries and documentation are nothing short of first class in C18. My old university had both installed on the project lab machines, from memory the Hi-TECH offerings usually did a better job of code optimisation, but left more for the user to do in terms of writing code.
As someone who has worked with 8051s, PIC’s (16F,18F,PIC32,PIC24), MSP430 and AVRs, I no longer have the urge to code the "long way". If there is an off the shelf library for setting up a timer, peripheral or anything else, I will use it.
SDCC is not too bad either, and is free. Works pretty well for me under Piklab in Ubuntu. I would imagine there are guides out there for getting it set up with MPLAB...