Hm, seems like I realized why there was a dedicated route=shuttle_train way.

Because it has only start/end points connected with entrance/exit highway ways. Now railway=rail way has a lot of common nodes with other highways and routing engines (without any specific processing) interpret these nodes as possible enter/exit, which is not correct.