Faits:
A. A._, ressortissant algérien né en 1983, a été arrêté le 20 septembre 2011 et mis en prévention de tentatives de meurtre, voire d'assassinat, pour avoir participé avec au moins cinq autres personnes, le 7 août 2011, à une agression au cours de laquelle B._ a été frappé et poignardé. Il a été reconnu par la victime, mais nie toute participation à cette agression. Il est également mis en cause pour une tentative de meurtre commise le 16 septembre 2011. La détention provisoire a été prolongée jusqu'au 22 décembre 2011, puis jusqu'au 16 mars 2012.
B. Par ordonnance du 13 mars 2012, le Tribunal des mesures de contrainte du canton de Genève (Tmc) a refusé de prolonger une nouvelle fois la détention. Le prévenu avait reconnu s'être trouvé sur les lieux au moment de la première agression, mais contestait toute participation, sans se souvenir s'il avait un couteau. La victime l'avait identifié, mais était revenue sur ses déclarations lors d'une audience de confrontation. Aucun autre élément ne venait confirmer les charges à l'encontre du prévenu, de sorte que celles-ci apparaissaient insuffisantes.
Par acte du 13 mars 2012, le Ministère public du canton de Genève a déclaré recourir auprès de la Chambre pénale de recours de la Cour de justice contre cette ordonnance. Il demandait le maintien en détention du prévenu, pour trois mois. Invité à se déterminer dans les trois jours, le prévenu a conclu à l'irrecevabilité du recours (l'ordonnance attaquée étant inexactement désignée), et à son rejet sur le fond. A l'invitation de la Chambre pénale de recours, le Ministère public a déposé une réplique le 22 mars 2012, reprenant dans le détail le rôle joué selon lui par chacun des cinq prévenus. S'agissant de A._, il relevait que celui-ci avait admis sa présence sur les lieux de la première agression, et qu'il apparaissait muni d'un couteau sur les images de vidéosurveillance. Il avait également été reconnu par des tiers. Les rétractations de la victime étaient manifestement dictées par la crainte. Cette réplique a été transmise le vendredi 23 mars 2012 au prévenu, pour information. Celui-ci l'a reçue le lundi 26 mars et a conclu à son irrecevabilité: le Ministère public ne disposait pas d'un droit de réplique, dès lors qu'un second échange d'écritures (incluant un droit de dupliquer) n'avait pas été ordonné.
C. Par arrêt du 30 mars 2012, la Chambre pénale a admis le recours du Ministère public et ordonné le maintien de la détention provisoire jusqu'au 13 juin 2012. En dépit de l'absence d'éléments nouveaux, les charges suffisantes avaient déjà été reconnues dans des arrêts précédents de la Chambre pénale de recours, dont le Tmc ne pouvait faire abstraction. La présence des prévenus lors de l'agression du 7 août 2011 était attestée par les enregistrements vidéo, où A._ était aperçu poursuivant la victime; l'un des prévenus avait admis sa participation à l'agression et avait également impliqué les autres prévenus. Les charges étaient également suffisantes s'agissant de la seconde agression.
D. Par acte du 2 mai 2012, A._ forme un recours en matière pénale par lequel il demande l'annulation de l'arrêt précité, la confirmation de l'ordonnance du Tmc et sa remise en liberté. Subsidiairement, il conclut au renvoi de la cause à la cour cantonale pour nouvelle décision au sens des considérants. Il demande l'assistance judiciaire.
La Chambre pénale de recours persiste dans les termes de son arrêt. Le Ministère public conclut au rejet du recours

Considérant en droit:
1. Selon l'art. 78 LTF, le recours en matière pénale est ouvert contre les décisions relatives à la détention provisoire ou pour des motifs de sûreté au sens des art. 212 ss CPP.
Selon l'art. 81 al. 1 let. a et let. b ch. 1 LTF, le prévenu a qualité pour agir. Le recours est formé en temps utile (art. 100 al. 1 LTF) contre une décision rendue en dernière instance cantonale (art. 80 LTF). Les conclusions présentées sont en soi recevables au regard de l'art. 107 al. 2 LTF.
2. Le recourant soulève deux griefs d'ordre formel qu'il y a lieu d'examiner en premier lieu. Dans un premier grief, il se plaint d'une violation de l'art. 390 al. 1 CPP. Il relève que le recours du Ministère public ne désignait pas correctement la décision attaquée, de sorte que ses conclusions devaient être déclarées irrecevables.
2.1 L'art. 390 al. 1 CPP, applicable à l'ensemble des procédures de recours (art. 379 CPP), impose le dépôt d'un mémoire de recours. Celui-ci doit désigner la décision attaquée, et faire ressortir une volonté d'en obtenir l'annulation (art. 385 CPP; CALAME, Commentaire Romand CPP, n° 1 ad art. 390).
2.2 Le Ministère public a certes mentionné, dans son recours cantonal, des numéros erronés d'ordonnances. La cour cantonale a toutefois considéré à juste titre qu'en dépit de cette erreur de désignation, la décision attaquée était clairement identifiable. Cela est conforme au principe de la bonne foi (art. 5 al. 3 Cst.), qui veut que les actes de procédure soient interprétés selon le sens que l'on peut raisonnablement leur attribuer, sans s'arrêter aux formulations manifestement inexactes (<ref-ruling> consid. 3b p. 58; <ref-ruling> consid. 2 p. 96 ss et les références). En l'occurrence, il n'est pas contesté que la décision entreprise par le Ministère public était parfaitement reconnaissable. L'irrecevabilité du recours cantonal, préconisée par le recourant, aurait donc manifestement constitué un formalisme excessif. Le grief doit être écarté.
3. Le recourant se plaint ensuite d'une violation de son droit d'être entendu en relation avec l'art. 390 al. 2 et 3 CPP. Il reproche à la cour cantonale d'avoir autorisé le Ministère public à déposer une réplique, sans ordonner formellement de second échange d'écritures. Cette réplique lui aurait été remise pour information, sans qu'un délai ne lui ait été imparti pour présenter de nouvelles observations.
3.1 Selon les art. 29 al. 2 Cst. et 3 al. 2 let. c CPP, les parties ont le droit d'être entendues. Cela comprend notamment le droit pour une partie à un procès de prendre connaissance de toute argumentation présentée au tribunal et de se déterminer à son propos, que celle-ci contienne ou non de nouveaux éléments de fait ou de droit, et qu'elle soit ou non concrètement susceptible d'influer sur le jugement à rendre. Il appartient en effet aux parties, et non au juge, de décider si une prise de position ou une pièce nouvellement versée au dossier contient des éléments déterminants qui appellent des observations de leur part. Ce droit à la réplique découle aussi, en matière de détention, de l'art. 5 par. 4 CEDH. Toute prise de position ou pièce nouvelle versée au dossier doit ainsi être communiquée aux parties pour leur permettre de décider si elles veulent ou non faire usage de leur faculté de se déterminer (<ref-ruling> consid. 2.3.1 p. 197; <ref-ruling> consid. 4.5; <ref-ruling> consid. 2.2; <ref-ruling> consid. 3.3.2 - 3.3.4; arrêt 1C_196/2011 du 11 juillet 2011 publié in SJ 2012 I p. 117; CourEDH, arrêt Schaller-Bossert contre Suisse du 28 octobre 2010 § 39 s.).
3.2 En matière de détention provisoire, la jurisprudence précise encore, dans le cadre du droit de réplique garanti par l'art. 5 par. 4 CEDH, qu'une simple remise "pour information" des observations de la partie adverse est insuffisante, et qu'un délai doit être imparti afin de faire valoir le droit de réplique (arrêt 1B_728/2011 du 13 janvier 2012, consid. 2.3 et les arrêts cités).
3.3 En l'occurrence, la réplique du Ministère publique, qui comporte neuf pages, a été transmise à l'avocate du recourant pour information. Aucun délai n'était fixé pour le dépôt d'éventuelles observations. L'avocate du recourant a certes réagi, mais en concluant à l'irrecevabilité du mémoire de réplique, en se plaignant de ne pas disposer lui-même d'une occasion de déposer des observations complémentaires. On ne saurait lui reprocher de ne pas avoir déposé d'écriture spontanée avant le prononcé de l'arrêt attaqué, car l'indication "pour information" pouvait de bonne foi être comprise en ce sens qu'aucune écriture supplémentaire n'était autorisée. Il appartenait dès lors à la cour cantonale d'octroyer au recourant un bref délai pour exercer son droit de réplique. Ne l'ayant pas fait, elle a violé le droit d'être entendu.
3.4 La violation du droit d'être entendu ne peut plus être guérie en instance fédérale puisque ce ne sont pas uniquement des questions de droit qui sont controversées mais aussi des questions de fait que le Tribunal fédéral ne peut pas revoir librement (cf. art. 105 LTF; <ref-ruling> consid. 2 p. 72; arrêt 1C_196/2011 précité, consid. 2.4).
4. Le recours doit dès lors être admis pour ce motif, sans qu'il y ait à examiner les griefs de fond. La cause doit être renvoyée à la Chambre pénale pour nouvelle décision après avoir permis au recourant d'exercer son droit de réplique. L'admission du recours pour ce motif formel n'a toutefois pas pour conséquence la libération du recourant. En effet, l'ordonnance de mesures provisionnelles par laquelle la cour cantonale a ordonné le maintien en détention du prévenu, demeure en vigueur jusqu'au nouveau prononcé. Conformément à l'art. 68 al. 1 et 2 LTF, le recourant, qui obtient gain de cause, a droit à des dépens, à la charge du canton de Genève. Cela rend sans objet la demande d'assistance judiciaire. Conformément à l'art. 66 al. 4 LTF, il n'est pas perçu de frais judiciaires.

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est admis; l'arrêt attaqué est annulé et la cause est renvoyée à la Chambre pénale de recours de la Cour de justice du canton de Genève pour nouvelle décision dans le sens des considérants.
2. Une indemnité de dépens de 2'000 fr. est allouée à l'avocate du recourant, à la charge du canton de Genève. La demande d'assistance judiciaire est sans objet.
3. Il n'est pas perçu de frais judiciaires.
4. Le présent arrêt est communiqué à la mandataire du recourant, au Ministère public et à la Cour de justice du canton de Genève, Chambre pénale de recours.
Lausanne, le 15 mai 2012
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président: Fonjallaz
Le Greffier: Kurz