Most questions get at least one answer, and some of these answers get plenty of upvotes, but there seem to be fewer than I (at least) would expect that get the accepted answer tick. Why is this, and what (if anything) should we do about it?
Accepting and answer is the prerogative of the person posting the question. There is no obligation to accept an answer.
Sometimes the answers may not satisfy the poster - it may be a partial answer or one that lacks detail. On other occasions the poster may not know what should or could be done.
Some people asking a question are effectively temporary members, they ask one question & never return to the site.
I have seen some posters being prompted by moderators or other members of SE sites to accept an answer if they thought it answered their question satisfactorily, but there is no way to force anyone to accept an answer.
Out of my rather long experience with Stack Exchange in general, it is very easy to forget to accept an answer. It is recommended to wait at least 24h to accept an answer to allow users to answer it (accepted answer can be changed, but it is a rare action).
If the question does not record much activity (1-2 quick answers and comments only), it is easy to forget about the question, as SE does not send a reminder for the askers to accept an answer for their question.
Forgetting to accept an answer is even easier for minor sites where many have "secondary" accounts (e.g. mainly active on SO or other major site).
This issue was addressed by this post, but the reminder is only displayed when upvoting an answer for your question which is typically too early.
I think it has to do with the number of answers per question. As you can see on Area 51, this metric is quite low on Earth Science SE, with only 1.6 answer per question.
On a healthy site, questions receive multiple answers and the best answer is voted to the top.
I think many people asking questions don't want to accept a lonely answer. People want choice. If they had 2 or 3 answers to pick from, they would likely accept one.