Can someone please tell me why BAD SQL (poorly tuned) causes more LIO than PIO?

I always thought that whether or not a query used the Buffer Cache or Disk depended on whether or not the blocks were in memory. So why would a poorly written statement do this more than a well tuned one? Surely its a matter of the blocks ageing out of the buffers ...?

I (obviously) have little experience in this aspect of the job. In 4 years we've never had a user complain about poor performance so I've had little scope to justify (to management) any time spent tuning the DB. So - I'm trying to learn it theoretically and came upon some contradictory 'advice' (my original post).