In secret, an unemployed man with poor job prospects uses his savings to buy a large term life insurance policy, and designates a charity as the beneficiary. Two years after the policy is purchased, it will pay out in the event of suicide. The man waits the required two years, and then kills himself, much to the dismay of his surviving relatives. The charity receives the money and saves the lives of many people who would otherwise have died.
Are the actions of this man admirable or shameful?
I agree that a distinction should be drawn but I disagree about where. I think the morally important distinction is not between withholding information and providing false information, but why and in what context you are misleading the other person. If he's trying to violate your rights, for example, or if he's prying into something that's none of his business, then lie away. If you are trying to screw him over by misleading him, then you are getting into a moral gray area, or possibly worse.
Nah, that's just standard deontological vs. consequential thinking. If dishonesty is approached in consequential terms then it becomes just another act of (fully generalized) aggression -- something you don't want to do to someone except in self-defense or unless you'd also slash their tires, to borrow an Eliezer phrase, but not something that's forbidden in all cases. It only becomes problematic in general if there's a deontological prohibition against it.
Looking at it that way doesn't clarify the distinction between lying by commission vs. lying by omission, though. There's something else going on there.