Sometimes a ship is given the full name of a famous person because there are more than one famous person with that person's last name. A far as I know there is only one really famous Nimitz, but there are multiple famous Roosevelts, Washingtons, and even Lincolns. Also sometimes it is to specify when someone is not exactly famous in all circles. Most people like have no idea who Carl Vinson or John C. Stanislaus even are, and yet we have Aircraft carriers named after them among a lot of Presidents names. Since USS Enterprise (CVN-65) and USS America (CV-66) all the fleet carriers have been named after people...until the next USS Enterprise (CVN-80) is commissioned.
Starfleet seems to specify for famous people if they need to be more specific, or if the name sounds better in full as oppose to a short version. You will tend to find British ships named after Admirals and Generals that only use their last names, since they will either assume you know which one they are named after, or are inclusive in case there are multiple people with that last name (there actually are a bunch of famous people named Hood in the Royal Navy). Plus Starfleet names ships and shuttles after scientists and people famous for space exploration. I had a talk with someone after the old FASA and Starfleet Battles naming conventions which favored military names where later TNG and others favored men of peace and the like. Where in those two game systems you could find a USS Napoleon or a USS Genghis Khan, it is unlikely you would find one on any televised Star Trek not set in the mirror universe. But you would find ships named after famous warships of the past like Yorktown, Akagi, Enterprise, Victory, and Monitor. About the only name you will likely never find, even in the mirror universe, is a USS Hitler (expect perhaps named by a player in a game...as a joke)