Did your BF ever wait tables? I find that lots of times people who don't tip well or are likely to tip much lower for bad service didn't wait tables. (Although to be fair some people who did wait tables are harder on wait staff because they know how it is supposed to be done.)
I personally start at 20% as a base line and go up from there for great service. I've only ever gone down to like 15% for truly terrible service and even then, I kind of felt bad about it because as you said, you never know what people are going through that day.