Example sentences do not suggest a big difference. Is there?
Poor as he is, he is happy.
Though she is poor, she is happy.
貧乏 is a Sino-Japanese word (kango), and it only refers to financial poorness. It's an easy word, but it can sound somewhat direct and rude. In formal or academic contexts, 貧困 ("poverty") is mainly used.
貧しい is a native Japanese word (wago), and it can refer to not only financial poorness but also various kinds of poorness. For example you can say 心が貧しい人 ("narrow-minded person"), 資源の貧しい国 ("resource-poor country"), 想像力が貧しい人 ("person who lacks imagination skill") and so on. It's also a milder and safer word when you need to say someone is financially poor. 彼は貧乏な家庭で育った and 彼は貧しい家庭で育った are semantically the same, but the latter sounds "nicer" to me.
In general, Sino-Japanese words tend to have explicit, narrow or scientific meanings, whereas native Japanese words tend to have some derivative, idiomatic or figurative usages.
貧乏 is more direct and less polite. For example, 貧乏人！ is an insult, but 貧しい人！ is not.
Similarly, referring to somebody as 貧乏 sounds less considerate than 貧しい. As an example, あなたのお父上は貧乏だったのですか？ is odd because the rest of the sentence is very polite (and thus can be taken as a passive aggressive slight). あなたのお父上は貧しかったのですか？ is perfectly polite and will not be mistaken as an insult (normally).
In addition to the depth of the other answers, to depict the connotation: (American English here)
貧しい： Poor, impoverished
貧乏：Broke (financially, not broken)
They are same meaning! まずしい is old Japanese word. 貧乏 originates from China.