Why does ADC conversion time vary?
While there are reasons described by others concerning where your jitter may be coming from, being dependent upon things like conversion time (or even hidden branches in function libraries where each branch takes different times) is just poor practice for real time systems.  

If you need low jitter loop time, you need to MAKE IT by creating a timer interrupt to give it to you.  If you need speed, the timer should be set at your maximum time through your loops, plus a bit of head room.  On a timer interrupt you should service everything that needs to be done based on your last ADC read, then do the next ADC read.