Why did it take so long?
Short answers: Bureaucratic snafu, intentional pigeonholing, i.e., politics.
General Grant's rules for the surrender of the Army of Northern Virginia were rather lenient. Lee signed his parole the same evening he signed the surrender at Appomatox, April 9, 1865. The following month a stricter stipulation was added: Lee, because of his high military rank, was excluded from the general parole and had to make direct application to the President of the United States, Andrew Johnson. This he did, on June 13, 1865. A specific "Oath of Amnesty" had to be completed for the men outside the general parole of April 1865. General Lee complied with the new requirement signing his "Oath of Amnesty" on October 2, 1865. The paperwork thus done, General Lee waited... and waited ... and waited. When Lee died five years later, he died without his United States citizenship.
What had happened? Unfortunately, Lee's "Oath of Amnesty" and his letter to the President were separated, intentionally, thereby halting the process. In effect, a public official -- William H. Steward -- used an official government document -- that is, Lee's application -- as if it were his private property. Steward then gave Lee's application to one of his [Steward's] favorites as a gift! For more than 100 years, Lee's oath lay pigeonholed within records of the State Department. An archivist processing State Department records in 1970 discovered Lee's "Oath of Amnesty" within records kept during the tenure of William H. Steward.
Congress backdated their joint resolution to June 13, 1865, the date that Lee originally wrote a letter to President Andrew Johnson regarding his intent to be reinstated as a citizen of the United States. President Gerald R. Ford signed the joint resolution restoring Lee's citizenship on August 5, 1975.
And to think that some people think of archives as just dusty old stuff...