Settling for someone that you know doesn't deserve you, or doesn't provide you with the traits that you are looking for, may create a temporary sign of relief and comfort- but in the long run has some dire consequences.
Waste of time, energy, resources etc
Wasting years on a person that you know you're not going to end up with, or that doesn't meet your needs is only a waste of time. Sure you might enjoy the fact that there is a certain sense of calm and comfort knowing that you're in a relationship- but at what price? Spending effort, energy, money on someone that doesn't deserve you will just rob yourself. Plus if the relationship was to come to an end you would be deflated and exhausted as all that time was spent on someone you settled on.
In the end you're cheating yourself
You can pretend like you're ok with dating someone that doesn't deserve you. That you can get over his lack of enthusiasm, or lack of motivation, or maybe that he can grow to be more empathetic.... but you know that you're only cheating yourself. Sometimes letting go when you know it's not right, is the best thing to do for the both of you.
How old is too old?
It might be fun to settle at 20 when you're getting life experience, but as you get older it becomes more difficult to "start over" when you're 45 years old with kids. Not to say it is impossible, but it definitely complicates your time and resources. At one point people choose you.