The balance that I have chosen to strike is 5 lines of code in my file. I will allow myself five lines of code that could otherwise be in an external file before I actually create one. This is an arbitrary guideline, but it helps me to have a built in rule to decide when to move code to an external file.
This applies to controller logic as well. I don't ever have queries in my .cfm files, but I do sometimes interact with model components. This is really controller behavior, but so long as I have fewer than five lines of it, I leave it in the file. If I have more than that, then I create a page controller.
I think this sort of guideline leads to code that is much easier to manage than a guideline that always insists on an external file (or one that never uses one).
This does not, however, justify breaking encapsulation for any number of lines.
I have been using this rule for about a year now and I have been really happy with it.