How should I confront an under-performing coauthor?
You certainly need to sort this out. Would you like to stay on good terms with this colleague going forward? I'm going to assume the answer is yes, and I would certainly encourage that. 

Being direct is indeed the best approach, and it can be rudely done or considerately. Perhaps the person is having personal problems at the moment? You do not know what is causing the problem, but it is not necessary to assume that the person is just an unreliable jerk. They might be, but you can give them a chance to explain the situation.

Since you are doing all the work, and the two of your are peers, you are really in the driver's seat. But you do have to talk--not about promises for the future at this point but explanations for the past non-performance. 

You might ask the person what they want, since their actions to date suggest a lack of interest in the project or some problem interfering with their ability to work on it.  That's a considerate way of giving them an opportunity to explain the situation. You are not being mean or accusing them of anything. And you will soon enough find out whether or not the person really does have a short-term problem or is actually unreliable. Then you will know what to do.