I thought he didn't have moneyは、直訳すると「彼はお金が無いと思っていた」になりますが、この文脈でも使えます。
お金がほとんどないはずなのにタバコを買うお金はあるの!?という驚きは、 How did he have the money to buy cigarettes? I thought he didn't have any(money) という感じで表現できます。
もう一つ、Wasn't he supposed to be broke? は「~だったはずなのに」に近いかと思います。訳すると、お金がないはずじゃなかったの?です。これは実際に「彼にお金がない」という事実(?)を彼もしくは他の人から聞いていたときに使える表現です。