Help with Design: Using processor time efficiently when dealing with serial

"In other words, before adding the complexity of an interrupt service routine you need to first determine that PID timing really is that critical."

Agreed and well said. In this case, though, with an Arduino, it is so easy to set up a timer and interrupt loop, you can look at that as just a simpler and better way to organize the code. It's probably harder to architect the code without such a loop. Yes, it enables a faster control loop if need be, but even if it is not needed, it's an easy and proper place to put a separate loop to repeatedly read and control something. I'd describe it as making a software thermostat. You can modify an automatic adjusting algorithm on top of it, as you need it.