Jesus preached that the LOVE of money is the root of all evil (not money, as some say). But, his point was that money can't be EVERYTHING to someone. God must come first. He also didn't preach that EVERYONE was to sell all they had and give to the poor. That was directed at ONE person who came to him asking what he could do to have eternal life. He knew that the man (referred to as the "rich young ruler") was to sell all he had and give to the poor because he knew his money meant more to him than God. He DID say it is difficult (but not impossible) for a rich man enter heaven.
The "eye of the needle" probably refers to a gate in Jerusalem that was difficult to enter when loaded with goods so the camel would have to be unloaded if the merchant were to go in at that gate (of course, it can be loaded back up after he got through the gate). Now, those who are wealthy tend to rely on their own resources instead of God. It is more difficult for a wealthy man to enter into Heaven. There were also at least 2 referred to who had some means that were followers of Jesus (Joseph who had Jesus buried in a tomb and Nicodemus). He did not tell Zacchaeus to give his money away. He did that to make restitution to those he had "overcharged" (plus extra).
Restitution shows he understood what he did was wrong (even if it was legal) and that his heart was truly changed. It doesn't say he no longer did his profession afterward (because you can be a tax collector without being a sinner).