Этому есть три объяснения
Во-первых — суеверие: когда зарождалось мореходство навигация была опасной.
Сказать, что корабль плывет, означало, что корабль в воде, потонул.
А вот если он «идет», значит, он как бы скользит по поверхности.
Второе — это логика моряков. Они считают: мусор плавает — у него нет маршрута и определённой цели, а вот судно идет по четко определенному маршруту.
Еще пример плавать—значит двигаться в толще воды, а вот ходить можно исключительно по поверхности.
Третье — это традиция. У англичан есть выражение «to go to sea», что буквально означает «идти по морю». А ведь эта страна существенно повлияла на мировое мореходство. Может быть, выражение пришло именно оттуда.
И у Германии мы много позаимствовали, там не говорят «плывёт», там говорят едет: "Mein Schiff fährt".
Но в русском языке высказывание «корабль идет» неверно.
То, что имеет ноги — идет, а корабль плавает. По воде идти нельзя. В официальных документах пишут, что корабль плывёт.
Даже в обиходе мы говорим: «капитан дальнего плавания», но не «дальнего хождения».
«Корабль идет» — это профессиональная лексика, а не официальное правило.