Так почему же Москва-река пишется через дефис, а река Москва - раздельно?
Здесь нам надо обратиться к грамматике русского языка.
Там все хорошо и понятно написано.
Дело в том, что здесь речь идет о приложениях.
Приложение - это определение, выраженное существительным. Оно по-новому характеризует предмет, дает ему другое название или указывает на национальность, профессию и т.д. Брат-студент, писатель-фантаст.
Например: Подруга, веселая говорунья, упорхнула в кино. Здесь приложение: веселая говорунья. Как видим, при приложении-существительном может быть и прилагательное.
Кстати, приложение-существительное - это тоже приложение. То есть приложением здесь является слово "существительное", а определяемым словом - "приложение".
Так вот, правило таково: если приложение и определяемое им слово выражены нарицательными существительными, то между ними ставится дефис.
Бабочка-капустница приземлилась на травинку. Бабочка - определяемое слово, капустница - приложение.
Если же или приложение, или определяемое слово выражены собственным существительным, то дефис ставится в том случае, если имя собственное стоит перед нарицательным. Это как раз наш случай: Москва-река. Москва - имя собственное, и оно стоит перед именем нарицательным "река", поэтому нужен дефис.
Другой случай - река Москва. Тут имя собственное стоит после нарицательного, значит, дефис между ними ставить не надо.