There is no question of whether or not there is liability in revoking a job offer made to a person who subsequently quits their job (that they were not in danger of losing otherwise) in order to take the job someone at your company offered to them. Whether or not they can prove it is another thing, and how you treat that fact is between you, your conscience, and perhaps your defense attorney as well as anybody else who may know about the offer having been extended. Even if they can retain their job with their former employer, there is also no question of damage being done to their future with that company.
It is generally safer to fire someone than to revoke a job offer. The new candidate better be head and shoulders above the person to whom your company extended the job offer in order to minimize the risks associated with having your company's decision formally questioned.
Ethically and legally, I think you are on much stronger ground keeping your word to the original candidate. Honestly, I'm a little surprised that the hiring manager would have hired someone they felt was not reliable in the first place. Assuming you can know, in advance, how reliable one person is in comparison to another through the standard intake process, then I would expect that the hiring authority had in mind a "reliability" threshold and the first candidate met that threshold and it should be adequate, all things considered. If the candidate wasn't adequate on a primary dimension, that's the hiring manager's fault and that needs to be addressed but I wouldn't address it by punishing the candidate to whom an offer was extended.