The witness says he saw two surface-to-air missiles at the headquarters of the Tutsi militia headed by current Rwandan President Paul Kagame, which were later used to take down Habyarimana's plane.
The missile strike near the airport in the capital Kigali sparked 100 days of slaughter of the Tutsi ethnic minority by members of Habyarimana's Hutu ethnic group, leaving an estimated 800,000 people dead.
The French judiciary, who are acting on a complaint from French citizens killed aboard Habyarimana's plane, decided in October 2016 to re-open its investigation into the assassination.
A total of seven people have been charged in France over the deaths, including Rwanda's current defence minister, James Kabarebe, and the alleged missile firer, Franck Nziza.
The new witness, who has spoken to French judges at least twice already, claims he loaded two SA-16 missiles onto a truck at the headquarters of the Rwandan Patriotic Front (RPF) in Mulindi in March 1994 which were destined for Kigali.
The source declined to give the name of the witness.
The alleged missile handlers "told us... that they fired from a place called Massaka and specifically from a bridge where they had a view of the airport," the witness said, according to the source who spoke to AFP.
The testimony corroborates other versions of events that point the finger at Kagame's regime.
The SA-16 is an 11-kilo (24-pound), Russian-made portable missile designed for single soldiers to attack helicopters or low-flying aircraft.
The French judges want to organise a hearing in mid-December between the new witness and the two main accused, Kabarebe and Nziza, the source said.
The French investigation has been a deep thorn in relations between France and Rwanda.
Kagame has accused French soldiers of being both accomplices and "actors" in the genocide and a Rwandan investigation found Hutu extremists were responsible for the missile attack.
In 2012, French experts identified an area held by Habyarimana's presidential guard as the most likely place from which the missile was fired.