Правило таково: слова, обозначающие участки течения рек, пишутся со строчной буквы, если не входят в состав названий, напр.: верхняя Припять, нижняя Березина, но: Верхняя Тура, Нижняя Тунгуска (названия рек). Поэтому корректно: нижний Енисей, средний Енисей, верхний Енисей.
В «Справочнике издателя и автора» А. Э. Мильчина, Л, К. Чельцовой дана такая рекомендация: названия участков течения рек и плесов пишутся со строчной, если они не входят в состав сложных собственных названий. Например: верхняя Припять, нижняя Березина, средний плес Волги. Но: Верхняя Тура (название города), Нижняя Тунгуска (название реки). Поэтому правильно: верхний Амур, средний Амур, нижний Амур.
Правило звучит так (см., напр., словарь В. В. Лопатина, И. В. Нечаевой, Л. К. Чельцовой «Прописная или строчная?»): слова, обозначающие участки течения рек, пишутся со строчной буквы, если не входят в состав сложных собственных названий, напр.: верхняя Припять, нижняя Березина, но: Верхняя Тура, Нижняя Тунгуска (названия рек), Верхний Рейн (название департамента во Франции), Средняя Ахтуба (поселок).
Но при этом словари (в т. ч. упомянутый словарь) фиксируют написание Верхняя Волга, Средняя Волга, Нижняя Волга. Можно предположить, что такое написание обусловлено многолетней традицией употребления.