What is your fill factor for your index?
I happen to know the solution to this ( experience!! ) to get the space back you must use a dbcc shrinkfile(1) which attempts to return the mdf file back to its original size. This will reclaim the space.
How do I know? I have a large database containing xml in a text column, we archived 50% of the data but the original database stayed within 80% of its original size despite best efforts. I asked my friendly MVP and he found some info from a system engineer about text data .. so .. use this extreme shrink and you'll get the space back.