?先行詞が<“前置詞の”目的語>になっている場合
a friend to play with において、play with a friend というように、
a friend が with の目的語になっています。
?to不定詞が<関係副詞>の働きをしている場合
the time to leave here = the time when you leave here というように、
to不定詞が<関係副詞>の働きをしている
?to不定詞が先行詞と<同格>になっている場合
a right to decide において、決定する(という)権利、
opportunity to study abroad において、留学する(という)機会、というように、
先行詞とto不定詞が<同格>の働きを果たしています。
“という”を補うことができることが、1つの証拠です。
今回の a habit to buy whatever he wants は、?の<同格>だと思われます。
欲しいものをなんでも買ってしまう(という)彼の癖、となりますし。
また、コロケーションの話ですが、habit と of とのつながりはよく見かけますし、
今いくつかの辞書で確認しました。
habit of 〜 / -ing の表現はメジャーな表現ですから、
habit of buying としても、なんら問題ありません。むしろ自然な表現です。