Faits : A. En août 2018, le Ministère public de l'arrondissement de la Broye et du Nord vaudois a ouvert une instruction pénale contre A._ pour lésions corporelles simples qualifiées, menaces, contrainte, séquestration et enlèvement. Il est reproché au prévenu d'avoir, le 1er août 2018, avec deux comparses attiré B._ dans une forêt, puis de l'avoir entravé et attaché, de lui avoir fait subir différents sévices corporels, en particulier des coups de fouet ainsi que des décharges électriques au moyen d'un "taser" et de l'avoir aspergé de gaz lacrymogène. Les comparses auraient ensuite contraint leur victime à monter dans un véhicule pour la conduire à l'appartement de l'un d'eux, d'où il n'aurait pu s'échapper que le lendemain. En novembre 2018, le Ministère public a étendu l'instruction à des faits de contrainte sexuelle que A._ est soupçonné d'avoir commis en France le 21 juillet 2018 et pour lesquels les autorités françaises ont délégué les poursuites aux autorités suisses. A._ a été libéré sous contrôle judiciaire par les autorités françaises après une garde-à-vue prolongée du 21 au 22 juillet 2018. Par ordonnance du 17 août 2018, le Tribunal des mesures de contrainte du canton de Vaud (Tmc) a ordonné la détention provisoire de l'intéressé pour une durée d'un mois. Par la suite, la détention provisoire a été régulièrement prolongée à plusieurs reprises. Le 25 février 2019, le Ministère public a requis la prolongation de la détention provisoire de A._ pour une durée de trois mois en raison des risques de collusion et de réitération. A._ s'y est opposé et a demandé sa libération immédiate. Le Tmc a ordonné la prolongation de la détention pour une durée de trois mois, soit jusqu'au 14 juin 2019, par ordonnance du 5 mars 2019. La Chambre des recours pénale du Tribunal cantonal du canton de Vaud a confirmé cette ordonnance sur recours du prévenu, par arrêt du 26 mars 2019. En substance, la cour cantonale a considéré que les charges étaient suffisantes, que le risque de réitération existait et que le principe de la proportionnalité était respecté. B. Agissant par la voie du recours en matière de droit pénal, A._ demande principalement au Tribunal fédéral de réformer l'arrêt cantonal en ce sens que l'ordonnance du 5 mars 2019 est annulée et sa libération est immédiatement ordonnée. Il demande subsidiairement la réforme de l'arrêt attaqué en ce sens que des mesures de substitution (obligation de résider à domicile avec limitation de ses déplacements, obligation de respecter les termes de sa mesure AI, interdiction d'entretenir tout contact avec les personnes en lien avec les faits survenus les 21 juillet et 1er août 2018) sont ordonnées en lieu et place de la détention provisoire. Encore plus subsidiairement, le recourant conclut à l'annulation de l'arrêt attaqué et au renvoi du dossier à l'autorité de première instance ou de seconde instance pour nouvelle décision dans le sens des considérants. Il requiert aussi l'assistance judiciaire. Le Ministère public et le Tribunal cantonal renoncent à se déterminer et se réfèrent à l'arrêt attaqué.