Faits:
A. Le 6 décembre 2011, X._ a été interpellé et prévenu de détention, consommation et trafic de stupéfiants, ainsi que de détention d'armes. La police a retrouvé sur lui environ 16 g de cocaïne, 2 g de haschich et 2'060 francs. Une perquisition de son domicile a en outre permis de découvrir 117,1 g de cocaïne, 10,8 g de marijuana, quarante pastilles de paracétamol, un mixer avec des résidus de poudre blanche, divers papiers portant des inscriptions de calculs de pourcentages et de grammes, un petit poignard et un taser. Par décision du même jour, le Ministère public du canton de Genève a ordonné le séquestre des 2'060 fr. en vue de la couverture des frais et de l'exécution d'une créance compensatrice.
Le 12 décembre 2011, X._ a requis la restitution de cette somme, en exposant qu'elle provenait de la rente qui lui est versée par l'aide sociale. Le Ministère public a rejeté cette demande par décision du 21 décembre 2011. X._ a recouru contre cette décision auprès de la Chambre pénale de recours de la Cour de justice du canton de Genève (ci-après: la Cour de justice), qui a rejeté ce recours par arrêt du 21 février 2012. Cette autorité a considéré en substance qu'il existait des charges suffisantes à l'encontre du recourant pour justifier un séquestre en vue de l'exécution d'une créance compensatrice, sans qu'il soit nécessaire de se prononcer sur le séquestre en couverture des frais.
B. Agissant par la voie du recours en matière pénale, X._ demande au Tribunal fédéral d'annuler cet arrêt ainsi que l'ordonnance du Ministère public du 6 décembre 2011 et d'ordonner la restitution du montant de 2'060 fr. avec intérêts à 5% à compter du 6 décembre 2011, de lui allouer une somme de 3'000 fr. pour tort moral et, subsidiairement, de renvoyer la cause à l'instance précédente pour nouvelle décision. Il requiert en outre l'octroi de l'assistance judiciaire. Le Ministère public et la Cour de justice ont renoncé à se déterminer.

Considérant en droit:
1. Le recours en matière pénale, au sens de l'<ref-law>, est ouvert contre une décision de saisie prise au cours de la procédure pénale, et confirmée en dernière instance cantonale (<ref-law>). La décision par laquelle le juge prononce, maintient ou refuse un séquestre pénal constitue une décision incidente, qui ne met pas fin à la procédure (<ref-ruling> consid. 1 p. 131; <ref-ruling> consid. 1b p. 100 et les références). Une telle décision peut faire l'objet d'un recours au Tribunal fédéral notamment si elle est de nature à causer un préjudice juridique irréparable au sens de l'<ref-law>. Selon la jurisprudence, le séquestre de valeurs patrimoniales cause en principe un dommage irréparable, dans la mesure où le détenteur se trouve privé temporairement de la libre disposition des valeurs saisies (ATF <ref-ruling> consid. 1b p. 101; voir également <ref-ruling> consid. 4 p. 141; <ref-ruling> consid. 1 p. 131; <ref-ruling> consid. 4 p. 187 et les références). Pour le surplus, le recours est formé en temps utile (<ref-law>) contre une décision rendue en dernière instance cantonale (<ref-law>) et les conclusions présentées sont recevables au regard de l'<ref-law>.
2. Invoquant l'art. 268 al. 2 et 3 du code de procédure pénale suisse (CPP; RS 312.0), le recourant se plaint d'une violation de la garantie du minimum vital.
2.1 Intitulé « séquestre en couverture des frais », l'art. 268 expose les conditions auxquelles un tel séquestre peut être prononcé (al. 1) et il précise que l'autorité doit tenir compte du revenu et de la fortune du prévenu et de sa famille (al. 2), les valeurs patrimoniales insaisissables selon les art. 92 à 94 de la loi fédérale sur la poursuite pour dettes et la faillites (LP; RS 281.1) étant exclues du séquestre (al. 3).
2.2 Le recourant perd de vue que la Cour de justice ne justifie pas le séquestre litigieux par la couverture des frais au sens des art. 268 et 263 al. 1 let. b CPP. Elle se fonde au contraire sur l'art. 263 al. 1 let. d CPP, qui permet la mise sous séquestre de valeur patrimoniales lorsqu'il est probable qu'elles devront être confisquées. Elle considère ainsi que le séquestre peut être maintenu en vue de l'exécution d'une créance compensatrice, de sorte qu'il n'est pas nécessaire de se prononcer sur le séquestre en couverture des frais, ce que le recourant ne remet pas en question dans ses griefs. Selon la systématique du CPP, seul le séquestre en couverture des frais impose de prendre en compte le revenu et la fortune du prévenu (<ref-law>) et d'exclure du séquestre les valeurs insaisissables selon les art. art. 92 à 94 LP (<ref-law>). Dès lors que le séquestre litigieux tel qu'il est défini dans l'arrêt attaqué n'a pas pour but d'assurer la couverture des frais, ces dispositions ne s'appliquent pas en l'espèce. Le recourant n'explique pas pourquoi les règles précitées devraient s'appliquer également au séquestre en vue de l'exécution d'une créance compensatrice, malgré le texte clair de l'<ref-law>. Il affirme uniquement que cela devrait être le cas, sans aucunement étayer ce point de vue conformément aux exigences de motivation déduites de l'<ref-law> (cf. <ref-ruling> consid. 1.4.1 p. 53 et la jurisprudence citée). La simple mention de l'arrêt 1P.21/2007 du 2 mai 2007 ne pallie pas ce défaut de motivation, l'arrêt en question ayant pour seul objet l'examen, sous l'angle de l'arbitraire, d'une pratique cantonale antérieure au CPP et renvoyant aux règles de la LP en matière de séquestre pénal à titre de droit cantonal supplétif. C'est le lieu de rappeler que si le Tribunal fédéral applique le droit fédéral d'office (<ref-law>), cela ne dispense pas le recourant de faire valoir des griefs motivés conformément aux exigences précitées (<ref-ruling> consid. 1.4.1 p. 254). Ce grief doit donc être rejeté dans la mesure où il est recevable.
3. Le grief relatif à l'arbitraire ne comporte aucune motivation et celui concernant un prétendu déni de justice ne respecte pas les exigences de l'<ref-law> (cf. supra consid. 2.2), le recourant se bornant à alléguer que la Cour de justice n'a pas examiné « un argument dûment invoqué », sans préciser de quel argument il s'agit. Au demeurant, à supposer qu'il se réfère à un grief relatif à la garantie du minimum vital, la Cour de justice pouvait se dispenser de l'examiner sans commettre de déni de justice, pour les motifs exposés au considérant précédent. Enfin, c'est en vain que le recourant réclame une indemnité pour tort moral en application de l'<ref-law>, dès lors qu'il n'a pas fait l'objet d'une mesure de contrainte illicite.
4. Il s'ensuit que le recours doit être rejeté, dans la mesure de sa recevabilité. Dès lors que le recourant est dans le besoin et que l'on peut admettre que ses conclusions n'étaient pas d'emblée vouées à l'échec, l'assistance judiciaire doit lui être accordée (<ref-law>). Il y a lieu de désigner Me Arnaud Moutinot en qualité d'avocat d'office et de fixer d'office ses honoraires, qui seront supportés par la caisse du Tribunal fédéral (<ref-law>). Le recourant est en outre dispensé des frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté, dans la mesure où il est recevable.
2. La demande d'assistance judiciaire est admise. Me Arnaud Moutinot est désigné comme défenseur d'office du recourant et ses honoraires, supportés par la caisse du Tribunal fédéral, sont fixés à 1'500 francs.
3. Il n'est pas perçu de frais judiciaires.
4. Le présent arrêt est communiqué au mandataire du recourant, au Ministère public et à la Cour de justice du canton de Genève, Chambre pénale de recours.
Lausanne, le 28 août 2012
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Juge présidant: Aemisegger
Le Greffier: Rittener