A lot of people get frustrated when they pay a few hundred pounds for their rail ticket only to find out they haven't got a seat. Understanably so (particularly as on a plane everyone has to be allocated a seat) but there are reasons for this. It can be even more annoying when you realise someone who paid just £5 for their ticket in a sale is guaranteed a seat.
The UK rail network has always made reservations optional which has meant people can buy flexible (or semi-flexible) tickets that let them travel on any train. If your ticket is marked 'Anytime', "off-peak' or 'super off-peak' then it has some degree of flexibility. Add to this season ticket holders and there's a considerable number of people not tied to a particular train. This means it's not possible to know how busy a particular service will be, therefore they can't stop the sale of these flexible tickets because one service is getting busy. There's no such thing as overbooking in the rail industry as these tickets are not tied to a train.
The only way to be sure of a seat is to reserve one, this can be done at the time of booking or at a station up to a day before departure (sometimes it is possible to reserve on the day, but it's safer to assume the day before). This is useful if you know which service you're travelling on in advance, however if you don't know which train you're on until close to departure then this is no use to you.
So how do those paying so little for their tickets get seats? Because the cheap advance tickets are tied to a particular train they come with a seat reservation automatically. Therefore if you definitely know which train you're travelling on it makes sense financially to get a cheap advance ticket.
If you have a flexible ticket and are fairly sure which train you're getting you can book a reservation. The reservation still does not tie your ticket to that train, if you decide to travel earlier or later you can still do so but without the guarantee of a reservation.
If you have a reservation and there's no seat available (e.g. fault with the reservation system, cancelled train, etc) Virgin Trains East Coast offers you a seat guarantee so you can claim a refund on your ticket cost.
What needs to be done
In the short term points of sale (ticket offices, online, etc) need to make it clear that a ticket on its own does not guarantee a seat. This is well known in the rail industry but it's not obvious to the average customer. If reservations are available on the service they should be offered.
In the long term hopefully technology will make things easier. CrossCountry trains have a system that lets you reserve seats by SMS upto 15 minutes before departure. There's a few issues with this idea, one of those being if someone sits in an unreserved seat the system may end up reserving it later on in the journey for someone else. If sensors could be installed to see if each seat was occupied it would resolve this and also able to see if someone hasn't shown up it can reallocate their seat. Having an app that shows how busy each train is would also be a good idea.