The trains collided at around 4:30 am (0330 GMT), police in the central canton of Schwyz said in a statement.
A 54-year-old German worker, who was on an outdoor platform on one of the work trains, died of his injuries at the scene.
A 52-year-old Portuguese man who was in the other train with five colleagues was injured and taken to hospital, police said.
Swiss national rail company SBB said one of the trains had rear-ended the other, which was at a standstill.
Also Read
Such work is generally carried out overnight when there is no regular rail traffic.
The accident "severely damaged the rails," SBB said, adding that train services through Arth-Goldau would be halted "for a long period due to the amount of damage".
Police said they had launched an investigation to determine the cause of the accident.