Faits:
A.
A._ et B._, coprévenus dans une affaire de trafic de stupéfiants, étaient détenus à la prison de Champ-Dollon. Dans le cadre de cette procédure, le premier a mis en cause le second en lien avec ce trafic.
Par pli du 7 septembre 2020, le conseil de A._ a transmis au ministère public une lettre de ce dernier, datée du 1er septembre 2020, dans laquelle il informait cette autorité qu'il avait fait l'objet de "menaces et contrainte" par B._, lequel, lors d'une promenade en prison, lui avait dit "si tu ne changes pas ce que t'as dit t'es mort" et signifié qu'il enverrait du monde pour s'en prendre à sa famille.
A._ a été entendu par la police le 16 septembre 2020 sur ces faits, qu'il a confirmés en apportant des précisions. A l'issue de l'audition, il a déclaré vouloir déposer plainte pénale contre B._.
Lors de l'audience d'instruction du 18 septembre 2020 devant le ministère public, A._ a confirmé vouloir participer à la procédure pénale en qualité de partie plaignante au pénal et au civil. A cette audience, B._ a été prévenu de menaces (<ref-law>), le procès-verbal valant ordonnance d'extension de l'instruction. Ce dernier a contesté les faits et son avocat a formulé des réquisitions de preuve, notamment l'identification et l'audition d'un témoin.
Ne souhaitant pas que la procédure pour trafic de stupéfiants soit retardée par l'instruction de sa plainte, A._ a demandé au ministère public, le 5 novembre 2020, et rappels des 10 et 12 novembre suivants, que celle-ci soit disjointe de la procédure principale. Le 13 novembre 2020, il a requis sa mise en liberté. Le même jour, faute de décision concernant la disjonction, son conseil a informé le ministère public que A._ retirait sa plainte pénale et abandonnait sa qualité de partie plaignante.
Par ordonnance du 15 décembre 2020, le ministère public genevois a classé la plainte que A._ a déposée contre B._, constatant un empêchement de procéder résultant du retrait de la plainte pénale du premier. A._ a été condamné aux frais de la procédure, arrêtés à 710 francs.
B.
Statuant sur recours de A._ concernant les frais de la procédure, la Chambre pénale de recours de la Cour de justice genevoise l'a rejeté par arrêt du 1er avril 2021, condamnant A._ aux frais de la procédure de recours, arrêtés à 800 francs.
C.
A._ recourt en matière pénale au Tribunal fédéral contre l'arrêt cantonal et conclut, avec suite de frais et dépens, à ce qu'il n'est pas condamné aux frais de la procédure ouverte contre B._, close par ordonnance du 15 décembre 2020. Il sollicite l'octroi de l'assistance judiciaire.
D.
Invités à se déterminer sur le mémoire de recours, la cour cantonale a indiqué n'avoir pas d'observations à présenter et le ministère public a persisté dans l'argumentation développée dans l'arrêt attaqué. Copies de ces déterminations ont été adressées au recourant pour information.

Considérant en droit:
1.
Le recourant, en qualité de partie plaignante, reproche à la cour cantonale d'avoir violé l'<ref-law> en mettant les frais de procédure à sa charge. Il soulève l'arbitraire dans l'établissement de certains faits.
Il dispose de la qualité pour recourir au Tribunal fédéral sur ce point, conformément à l'<ref-law> (cf. <ref-ruling> consid. 2).
1.1. En vertu de l'<ref-law>, les frais de procédure sont mis à la charge de la Confédération ou du canton qui a conduit la procédure, sous réserve des dispositions contraires du CPP.
D'après la jurisprudence, la répartition des frais de procédure repose sur le principe selon lequel celui qui a causé les frais doit les supporter (<ref-ruling> consid. 4.2.3; <ref-ruling> consid. 4.4.1; arrêts 6B_212/2020 du 21 avril 2021 consid. 6.1; 6B_369/2018 du 7 février 2019 consid. 2.1, non publié aux <ref-ruling>).
1.1.1. Selon l'<ref-law>, en cas d'infractions poursuivies sur plainte, les frais de procédure peuvent être mis à la charge de la partie plaignante ou du plaignant qui, ayant agi de manière téméraire ou par négligence grave, a entravé le bon déroulement de la procédure ou rendu celle-ci plus difficile lorsque la procédure est classée ou le prévenu acquitté (let. a) et le prévenu n'est pas astreint au paiement des frais conformément à l'art. 426 al. 2 (let. b).
Dans ce contexte, le plaignant doit être compris comme la personne qui a déposé une plainte pénale et qui a renoncé à user des droits qui sont les siens au sens de l'<ref-law>, étant précisé que cette renonciation ne vaut pas retrait de la plainte pénale (<ref-ruling> consid. 4.2.1; arrêt 6B_369/2018 précité consid. 2.1). Contrairement à la version française, les versions allemande et italienne opèrent une distinction entre la partie plaignante ("Privatklägerschaft"; "accusatore privato") et le plaignant ("antragstellende Person"; "querelante"). Ainsi la condition d'avoir agi de manière téméraire ou par négligence grave et de la sorte entravé le bon déroulement de la procédure ou rendu celle-ci plus difficile ne s'applique qu'au plaignant. En revanche, cette condition ne s'applique pas à la partie plaignante à qui les frais peuvent être mis à charge sans autre condition (<ref-ruling> consid. 4.2.2; arrêts 6B_212/2020 précité consid. 6.1; 6B_369/2018 précité consid. 2.1; 6B_446/2015 du 10 juin 2015 consid. 2.1.2). La personne qui porte plainte pénale et qui prend part à la procédure comme partie plaignante doit assumer entièrement le risque lié aux frais, tandis que la personne qui porte plainte mais renonce à ses droits de partie ne doit supporter les frais qu'en cas de comportement téméraire (<ref-ruling> consid. 4.2.3; arrêt 6B_446/2015 précité consid. 2.1.2). La jurisprudence a toutefois précisé que les frais de procédure ne peuvent être mis à la charge de la partie plaignante ayant déposé une plainte pénale qui, hormis le dépôt de la plainte, ne participe pas activement à la procédure que dans des cas particuliers (<ref-ruling> consid. 4.4.1; arrêt 6B_446/2015 précité consid. 2.1.2).
Une personne ayant porté plainte pour une infraction poursuivie d'office ne peut se voir imputer les frais de la procédure qu'aux conditions restrictives de l'art. 427 al. 1, respectivement de l'<ref-law> (<ref-ruling> consid. 4.4.2; cf. <ref-ruling> consid. 4.2.6; arrêt 6B_1458/2020 du 7 avril 2021 consid. 2.1, s'agissant de l'indemnisation du prévenu).
La règle de l'<ref-law> a un caractère dispositif; le juge peut donc s'en écarter si la situation le justifie. En cas d'acquittement ou de classement de la procédure, les frais de la procédure ne doivent par conséquent pas obligatoirement être mis à la charge de la partie plaignante. La loi est muette sur les motifs pour lesquels les frais sont ou non mis à la charge de la partie plaignante. Le juge doit statuer selon les règles du droit et de l'équité (<ref-law>; <ref-ruling> consid. 4.2.4). A cet égard, il dispose d'un large pouvoir d'appréciation. Le Tribunal fédéral ne substitue qu'avec retenue sa propre appréciation à celle de la juridiction cantonale. Il n'intervient que si la décision s'écarte sans raison des règles établies par la doctrine et la jurisprudence, repose sur des faits qui, dans le cas particulier, ne devaient jouer aucun rôle, ou encore ne tient pas compte d'éléments qui auraient absolument dû être pris en considération. En outre, il redresse un résultat manifestement injuste ou une iniquité choquante (arrêts 6B_369/2018 précité consid. 2.1; 6B_446/2015 précité consid. 2.1.2; cf. <ref-ruling> consid. 3.1 et les références citées).
1.1.2. Se rend coupable de menaces au sens de l'<ref-law>, celui qui, par une menace grave, aura alarmé ou effrayé une personne. Cette infraction est poursuivie sur plainte.
L'infraction de contrainte, poursuivie d'office et réprimée par l'<ref-law>, vise celui qui, en usant de violence envers une personne ou en la menaçant d'un dommage sérieux, ou en l'entravant de quelque autre manière dans sa liberté d'action, l'aura obligée à faire, à ne pas faire ou à laisser faire un acte.
1.2. En substance, la cour cantonale a relevé que, si la lettre du 1er septembre 2020 du recourant faisait état de "menaces et contrainte", seule l'infraction de menaces avait été retenue par le ministère public, ce dont le recourant, présent et assisté de son avocat, avait dûment été informé lors de l'audience du 18 septembre 2020. Par la suite, n'obtenant pas de réponse du ministère public sur sa demande de disjonction de la procédure, il avait, le 13 novembre 2020, parallèlement à sa demande de mise en liberté, retiré sa plainte et précisé qu'il renonçait à son audition par la police prévue le même jour. La cour cantonale en a déduit que le recourant avait compris et s'était accommodé que sa plainte fût instruite sous l'angle de l'<ref-law>, faute de quoi, si les faits avaient été poursuivis d'office, son retrait n'aurait pas eu l'effet escompté.
Dans un raisonnement subsidiaire, la cour cantonale a écarté l'argumentation du recourant selon laquelle il n'avait pas activement participé à la procédure. Relevant qu'il avait déclaré souhaiter déposer plainte lors de son audition par la police (le 16 septembre 2020), qu'il s'était constitué partie plaignante deux jours plus tard devant le ministère public qui l'avait confronté au prévenu, et qu'il avait requis la disjonction des faits relatifs à sa plainte, la cour cantonale a considéré que le recourant avait adopté un comportement actif dans la procédure.
Pour ces motifs, la cour cantonale a considéré que les frais de procédure pouvaient être mis à la charge du recourant, les conditions de l'<ref-law> étant réunies.
1.3. En l'espèce, dans son courrier du 1er septembre 2020, intitulé "menaces et contrainte ", le recourant a fait état de l'usage de la menace d'un dommage sérieux (menace de mort) visant à l'obliger à changer sa version des faits dans le cadre de la procédure pénale principale, contre sa volonté (cf. sur l'infraction de contrainte, <ref-ruling> consid. 3.2.1). Dans la lettre d'accompagnement, le conseil du recourant a précisé que ces faits étaient poursuivis d'office. L'audience du 18 septembre 2020 à laquelle se réfère la cour cantonale, portait sur la procédure principale liée au trafic de stupéfiants. Le recourant y a assisté en qualité de prévenu (PV d'audience du 18 septembre 2020 p. 1). Si B._ a également été mis en prévention de menaces (<ref-law>) lors de cette audience, il lui était reproché d'avoir notamment, par l'entremise de copains, proféré des menaces de mort en passant sous la fenêtre du recourant et en faisant un signe de trancher la gorge "pour qu'il modifie ses déclarations formulées par devant le ministère public en ce qu'il avait déclaré qu'il était son dealer" (PV d'audience du 18 septembre 2020 p. 7). Le recourant a ainsi dénoncé des faits qui, s'ils s'avéraient fondés, pouvaient relever de la tentative de contrainte, sous réserve de la réalisation des conditions subjectives. Cette infraction aurait absorbé, cas échéant, celle de menaces (cf. <ref-ruling> consid. 3.2.3; <ref-ruling> consid. 1b), poursuivie sur plainte.
La cour cantonale ne pouvait retenir, en défaveur du recourant, la qualification retenue par le ministère public lorsqu'il a notifié les charges supplémentaires au prévenu (<ref-law>).
Partant, faute pour l'infraction dénoncée d'être poursuivie sur plainte, la cour cantonale ne pouvait faire application de l'<ref-law> et condamner le recourant, partie plaignante, aux frais de la procédure. En l'absence de prétentions civiles formées par le recourant, l'<ref-law> n'était pas davantage applicable dans la configuration d'espèce.
1.4. Pour le surplus, hormis le dépôt de la plainte pénale et la confirmation de celle-ci avec constitution de partie plaignante, le recourant n'a pas participé activement à la procédure. Au contraire, il a retiré sa plainte avant qu'il ne soit procédé à d'autres actes d'instruction. Selon l'arrêt entrepris, il n'a pas formé de demande de preuves, pas plus qu'il ne s'est déterminé sur celles requises par l'intimé. La cour cantonale ne pouvait retenir la demande de disjonction des causes au titre de participation active, dès lors que cette requête, motivée par un désir de célérité dans la cause principale (cf. arrêt entrepris let. B.g), relève davantage de sa qualité de prévenu de trafic de stupéfiants que de celle de partie plaignante. Ainsi, à supposer que la plainte portait uniquement sur l'infraction de menaces, il n'existait pas de circonstances particulières permettant de mettre à la charge de la partie plaignante ayant simplement déposé plainte pénale, les frais de procédure au sens de l'<ref-law> (cf. <ref-ruling> consid. 4.3 et 4.4.1).
Aussi, dans la configuration d'espèce, la cour cantonale s'est fondée sur des éléments qui n'étaient pas pertinents pour déterminer le degré de participation du recourant à la procédure et en a omis d'autres qui auraient dû être pris en considération.
1.5. En outre, à la lumière de l'<ref-law>, qui prévoit que l'État supporte en règle générale les frais de procédure en cas de retrait de plainte au cours d'une tentative de conciliation du ministère public, les circonstances d'espèce ne pouvaient donner lieu à une condamnation du recourant aux frais, alors qu'il a retiré sa plainte à un stade précoce de la procédure.
1.6. Le recours est fondé, l'arrêt attaqué doit être annulé en tant qu'il confirme la mise à la charge du recourant des frais de procédure préliminaire liés à la plainte qu'il a déposée.
2.
Le recours doit être admis, l'arrêt attaqué annulé et la cause renvoyée à la cour cantonale pour nouvelle décision. Le recourant, qui obtient gain de cause, ne supporte pas de frais et peut prétendre à des dépens, versés en mains de son conseil, à la charge du canton de Genève (art. 68 al. 1 et 2 LTF). La demande d'assistance judiciaire du recourant devient ainsi sans objet.

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 cour cantonale pour nouvelle décision.
2.
Il n'est pas perçu de frais judiciaires.
3.
Une indemnité de 3'000 fr., à verser en mains du conseil du recourant, à titre de dépens, est mise à la charge du canton de Genève.
4.
Le présent arrêt est communiqué aux parties et à la Cour de justice de la République et canton de Genève, Chambre pénale de recours.
Lausanne, le 8 décembre 2021
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Juge présidant : Denys
La Greffière : Klinke