I'm just after mentioning some of the U/non-U differences noted in 1950s England at http://english.stackexchange.com/a/94930/15770 and this has an effect here too; dinner for a mid-day meal was non-U (middle class or possibly even working class) while lunch was U (upper class)*.
The distinction is not just about language, but also eating habits - dinner was pretty universally the main meal of the day, but which meal that was would depend upon occupation and region as well as class (the working class farm worker and working class factory worker have different pressures upon when they can eat).
Supper is a meal taken after dinner, so when it refers to depends upon when dinner is.
Breakfast refers not strictly to a morning meal, but to a meal taken after a period of some time without food. This is clearly talking about a morning meal in a period when one would fast throughout the whole night, but prior to electric light it and greater pressures of the clock it was not unusual to eat late in the night in a period between two sleeps, but you might have to break your fast in the evening if the activity of the day kept you away from dining.
Tea can mean any relatively light meal, but can even mean the main meal in some areas particularly among the working class (this is the usage I grew up with). Here it's a legacy of the main meal for the day being mid-day among the working class, with tea being used for the latter supper especially if they were inclined to also use supper to mean a pre-bedtime snack. Hence as dining patterns changed so that the main meal moved to the evening, it was still called tea.
This only touches on the wide degree of variation.
*Though for some words the U word would be used by the working class as well as the upper class, while the non-U was only used by the middle class.