Faits :
A.
A.a. A._, ressortissant marocain né en 1989 (<ref-law>), est arrivé dans le canton de Neuchâtel en 2014 pour suivre des études auprès de l'Université de Neuchâtel (Master en mathématiques). Le 20 novembre 2014, le service des migrations du canton de Neuchâtel (ci-après: le Service cantonal) lui a délivré une autorisation de séjour pour études, valable jusqu'au 30 septembre 2015.
A.b. Par décision du 1er juin 2016, le Service cantonal a révoqué (recte: a refusé de prolonger) l'autorisation de séjour pour études de A._. Cette décision a été confirmée par arrêt du Tribunal fédéral du 16 janvier 2019 (cause 2C_52/2019), à l'issue de plusieurs procédures de recours et de révision, et un délai au 25 janvier 2019 a été imparti à l'intéressé pour quitter la Suisse. Le 29 mars 2019, le Service cantonal a accordé à A._ une prolongation de son délai de départ au 30 avril 2019.
A.c. Le 29 avril 2019, A._ a déposé auprès du Service cantonal une demande de reconsidération de la décision du 1er juin 2016. Subsidiairement, l'intéressé a requis l'octroi d'une nouvelle autorisation pour études, se prévalant d'une inscription auprès de l'Université de Fribourg, dans la filière Master of arts in legal studies.
B.
Par décision du 24 mai 2019, le Service cantonal a rejeté la demande formée par A._ le 29 avril 2019 et a imparti à l'intéressé un délai au 7 juillet 2019 pour quitter la Suisse. Le 3 octobre 2019, le Département de l'économie et de l'action sociale du canton de Neuchâtel (ci-après: le Département) a rejeté le recours déposé par A._ à l'encontre de cette décision.
Par arrêt du 28 avril 2020, la Cour de droit public du Tribunal cantonal de la République et canton de Neuchâtel (ci-après: le Tribunal cantonal) a rejeté le recours formé par A._ contre la décision du Département du 3 octobre 2019 et a reformé le chiffre 1 de celle-ci comme suit: "le recours contre la décision du [Service cantonal] du 24 mai 2019 doit être rejeté, la décision attaquée étant réformée en ce sens que la demande d'octroi d'autorisation de séjour est déclarée irrecevable". Les juges cantonaux ont retenu, en substance, que les conditions posées par la jurisprudence pour qu'il soit entré en matière sur une nouvelle demande d'autorisation n'étaient pas remplies en l'espèce, de sorte que tant le Service cantonal que le Département auraient dû déclarer irrecevable la demande de l'intéressé.
C.
A l'encontre de l'arrêt du 28 avril 2020, A._ dépose un recours constitutionnel subsidiaire auprès du Tribunal fédéral. Il conclut, sous suite de frais, à l'annulation de l'arrêt entrepris et à l'octroi d'une autorisation de séjour pour études. Subsidiairement, il requiert le renvoi de la cause à l'autorité précédente pour nouvelle décision dans le sens des considérants. Il sollicite en outre le bénéfice de l'assistance judiciaire.
Le Tribunal cantonal se réfère aux motifs de son arrêt et conclut au rejet du recours. Le Service cantonal et le Département concluent au rejet du recours, dans la mesure où il est recevable. Le Secrétariat d'État aux migrations ne s'est pas prononcé.
Par ordonnance du 15 juin 2020, le Président de la IIe Cour de droit public du Tribunal fédéral a rejeté la requête de mesures provisionnelles tendant à ce que l'intéressé soit autorisé à demeurer en Suisse pendant la procédure de recours.

Considérant en droit :
1.
Le Tribunal fédéral examine d'office sa compétence (<ref-law>) et contrôle librement la recevabilité des recours qui lui sont soumis (<ref-ruling> consid. 1 p. 116).
1.1. D'après l'art. 83 let. c ch. 2 LTF, le recours en matière de droit public est irrecevable contre les décisions en matière de droit des étrangers qui concernent une autorisation à laquelle ni le droit fédéral, ni le droit international ne donnent droit. En raison de sa formulation potestative, l'art. 27 LEI (RS 142.20), qui concerne l'admission en Suisse des étrangers en vue d'une formation ou d'une formation continue, ne confère aucun droit à celui qui s'en prévaut (arrêts 2D_5/2020 du 2 avril 2020 consid. 1.1 et 2D_68/2014 du 30 juin 2015 consid. 2.1).
Le présent litige porte sur le refus d'octroyer au recourant une (nouvelle) autorisation de séjour pour études. Partant, le recours en matière de droit public est exclu en l'espèce. C'est donc à juste titre que le recourant a formé un recours constitutionnel subsidiaire (<ref-law>).
1.2. A qualité pour former un recours constitutionnel subsidiaire quiconque a pris part à la procédure devant l'autorité précédente ou a été privé de la possibilité de le faire (<ref-law>) et a un intérêt juridique à l'annulation ou à la modification de la décision attaquée (<ref-law>). En l'espèce, le recourant, qui ne peut se prévaloir de l'art. 27 LEI - au vu de sa formulation potestative - ni invoquer de manière indépendante l'interdiction de l'arbitraire, n'a pas une position juridique protégée lui conférant la qualité pour agir au fond sous cet angle (<ref-ruling> consid. 6 et 7 p. 197 ss). Selon la jurisprudence, il ne peut donc se plaindre par la voie du recours constitutionnel subsidiaire que de la violation d'un droit fondamental spécifique et de ses droits de partie équivalant à un déni de justice formel, et ce pour autant que, par ce biais, il n'invoque pas, même indirectement, des moyens ne pouvant être séparés du fond (cf. <ref-ruling> consid. 3.1.1 p. 130; <ref-ruling> consid. 6 p. 197 ss; arrêt 2D_5/2020 du 2 avril 2020 consid. 1.2).
En l'occurrence, le recourant, destinataire de l'arrêt attaqué, se plaint uniquement de la violation de l'art. 29 Cst. Son grief est partant recevable.
1.3. Pour le surplus, le recours, dirigé contre une décision finale (art. 117 et 90 LTF) rendue en dernière instance cantonale par une autorité judiciaire supérieure (art. 114 et 86 al. 1 let. d et al. 2 LTF), a été déposé en temps utile compte tenu des féries (art. 117 et 100 al. 1 LTF) et dans les formes requises (<ref-law>). Le recours est donc recevable.
1.4. Aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (<ref-law> cum <ref-law>). La lettre du Service cantonal du 11 mai 2020 et le courriel du décanat de l'Université de Fribourg du 2 juin 2020, que le recourant a annexés à son recours, ont été établis postérieurement à l'arrêt entrepris et sont donc des moyens de preuve nouveaux. Par conséquent, ils ne peuvent être pris en considération.
2.
2.1. Le recours constitutionnel subsidiaire ne peut être formé que pour violation des droits constitutionnels (<ref-law>). En vertu de l'<ref-law>, applicable par renvoi de l'<ref-law>, les griefs y relatifs doivent être invoqués et motivés par le recourant, à savoir expressément soulevés et exposés de manière claire et détaillée, en précisant en quoi consiste la violation (cf. <ref-ruling> consid. 5.1 p. 41; <ref-ruling> consid. 1.3 p. 30).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il peut néanmoins rectifier ou compléter les constatations de cette autorité si les faits ont été constatés en violation d'un droit constitutionnel (<ref-law> cum <ref-law>), ce que le recourant doit démontrer d'une manière circonstanciée et précise, conformément aux exigences de motivation posées à l'<ref-law> (par renvoi de l'<ref-law>; consid. 2.1 ci-dessus).
En l'occurrence, dans la mesure où le recourant présente une argumentation partiellement appellatoire, en complétant ou en modifiant librement les faits retenus dans l'arrêt entrepris, sans exposer en quoi ceux-ci auraient été constatés en violation d'un droit constitutionnel, le Tribunal fédéral ne peut pas en tenir compte. Il statuera donc sur la base des faits tels qu'ils ressortent de l'arrêt attaqué.
3.
Le recourant dénonce un déni de justice (art. 29 al. 1 Cst.). Il fait valoir que le Tribunal cantonal avait l'obligation d'examiner le fond de la cause. De l'avis de l'intéressé, cette autorité ne pouvait pas refuser d'entrer en matière en l'espèce, car sa requête du 29 avril 2020 (recte: 29 avril 2019) constituait "une nouvelle demande basée sur un nouvel objet, soit [son] immatriculation [...] à l'Université de Fribourg" (recours, p. 8).
3.1. Aux termes de l'art. 29 al. 1 Cst., toute personne a droit, dans une procédure judiciaire ou administrative, à ce que sa cause soit traitée équitablement et jugée dans un délai raisonnable. Il y a déni de justice formel lorsqu'une autorité n'applique pas ou applique d'une façon incorrecte une règle de procédure, de sorte qu'elle ferme l'accès à la justice au particulier qui, normalement, y aurait droit (<ref-ruling> consid. 3.1 p. 192). L'autorité qui ne statue pas ou n'entre pas en matière sur un recours ou un grief qui lui est soumis dans les formes et délai légaux, alors qu'elle était compétente pour le faire, viole l'art. 29 al. 1 Cst. (arrêt 2C_1034/2017 du 16 mai 2019 consid. 4.10.2).
3.2. En principe, même après un refus ou une révocation d'une autorisation, il est à tout moment possible de demander l'octroi d'une nouvelle autorisation, dans la mesure où, au moment du prononcé, l'étranger qui en fait la demande remplit les conditions posées à un tel octroi. Indépendamment du fait que cette demande s'intitule reconsidération ou nouvelle demande, elle ne saurait toutefois avoir pour conséquence de remettre continuellement en question des décisions entrées en force. L'autorité administrative n'est ainsi tenue d'entrer en matière sur une nouvelle demande que lorsque les circonstances ont subi des modifications notables ou lorsqu'il existe un cas de révision, c'est-à-dire lorsque l'étranger se prévaut de faits importants ou de preuves dont il n'avait pas connaissance dans la procédure précédente, qu'il lui aurait été impossible d'invoquer dans cette procédure pour des motifs juridiques ou pratiques ou encore qu'il n'avait alors pas de raison d'alléguer (cf. <ref-ruling> consid. 2.1 p. 181; arrêts 2C_862/2018 du 15 janvier 2019 consid. 3.1; 2C_198/2018 du 25 juin 2018 consid. 3.3; 2C_253/2017 du 30 mai 2017 consid. 4.3). La jurisprudence a retenu qu'un nouvel examen de la demande d'autorisation peut intervenir environ cinq ans après la fin du séjour légal en Suisse. Un examen avant la fin de ce délai n'est toutefois pas exclu, lorsque les circonstances se sont à ce point modifiées qu'un tel examen s'impose de lui-même (arrêts 2C_862/2018 du 15 janvier 2019 consid. 3.1 et 2C_253/2017 du 30 mai 2017 consid. 4.3).
3.3. En l'espèce, la procédure relative au refus de prolonger la (première) autorisation de séjour pour études du recourant a pris fin le 16 janvier 2019, lorsque le Tribunal fédéral a déclaré irrecevable le recours de l'intéressé (cf. supra let. A.b). Celui-ci a ensuite formé, le 29 avril 2019, une demande de reconsidération, subsidiairement une nouvelle demande, tendant en substance à l'octroi d'une nouvelle autorisation pour études, se prévalant d'une inscription auprès de l'Université de Fribourg. Indépendamment du fait que l'intéressé ait voulu déposer une demande de reconsidération ou une nouvelle demande, l'autorité administrative n'était tenue d'entrer en matière sur celle-ci qu'aux conditions prévues par la jurisprudence (consid. 3.2 ci-dessus). Or, tel que l'a retenu à juste titre le Tribunal cantonal, on ne voit pas que, dans le très bref laps de temps entre janvier 2019 et avril 2019, les circonstances aient pu se modifier au point qu'un nouvel examen de la demande d'autorisation s'imposerait largement avant le délai général de cinq ans. En particulier, le fait que le recourant, après avoir échoué définitivement dans la filière "Master en mathématiques" auprès de l'Université de Neuchâtel (arrêt entrepris, p. 3), se soit inscrit à un Master of arts in legal studies auprès de l'Université de Fribourg, n'est pas déterminant. Admettre le contraire reviendrait à dire qu'un étranger qui se trouve en situation d'échec définitif dans la filière pour suivre laquelle il avait obtenu une autorisation de séjour pour études, pourrait exiger des autorités administratives qu'elles entrent en matière sur une nouvelle demande d'autorisation de séjour (ou sur une demande de reconsidération) simplement en s'inscrivant à une nouvelle formation. Or, une telle façon de remettre continuellement en question une décision entrée en force n'est guère compatible avec la jurisprudence exposée ci-avant. L'inscription auprès de l'Université de Fribourg ne saurait ainsi constituer une circonstance à ce point déterminante qu'elle imposerait de renoncer au délai de cinq ans prévu par la jurisprudence et permettrait au recourant de voir sa nouvelle demande d'autorisation examinée par l'autorité de police des étrangers.
Il sied encore d'ajouter que l'arrêt 2D_5/2020 du 2 avril 2020, que l'intéressé invoque à l'appui de son recours, concernait une situation qui n'était pas comparable à celle du présent cas. Dans cette affaire, la personne intéressée avait en effet déposé sa (deuxième) demande d'autorisation de séjour dans un canton différent de celui où elle avait déposé sa (première) demande d'autorisation, alors que, dans le cas d'espèce, l'autorité qui a refusé de prolonger la première autorisation de séjour de l'intéressé est la même qui a rejeté sa deuxième demande du 29 avril 2019, soit le service des migrations du canton de Neuchâtel. Le recourant ne peut donc, pour ces raisons déjà, rien déduire en sa faveur de l'arrêt 2D_5/2020 du 2 avril 2020.
3.4. Il découle de ce qui précède que le Tribunal cantonal n'a pas commis un déni de justice (art. 29 al. 1 Cst.) en considérant qu'il n'y avait pas lieu d'entrer en matière sur le fond de la cause. Le grief y relatif est donc rejeté.
4.
Le recourant invoque également une violation de son droit d'être entendu (art. 29 al. 2 Cst.). Il soutient que le Tribunal cantonal aurait procédé à une reformatio in peius sans l'informer auparavant et sans lui donner la possibilité de s'exprimer à ce propos (recours, p. 10).
L'autorité précédente a réformé la décision du Département du 3 octobre 2019 en ce sens que la décision du Service cantonal du 24 mai 2019 était elle aussi réformée et la demande d'autorisation de séjour déposée par l'intéressé le 29 avril 2019 était déclarée irrecevable. Or, le fait que, à la suite de l'arrêt du Tribunal cantonal, cette demande ait été déclarée irrecevable, n'a pas placé le recourant dans une situation plus défavorable que celle dans laquelle il se trouvait avant de recourir (cf. <ref-ruling> consid. 2.2 p. 190; arrêts 2C_484/2019 du 6 novembre 2019 consid. 5.1 et 9C_319/2013 du 27 octobre 2013 consid. 6), dans la mesure où, de toute manière, son recours avait été rejeté et l'intéressé n'avait donc pas obtenu le titre de séjour souhaité. Partant, le grief tiré de la violation du droit d'être entendu en relation avec la reformatio in peius doit, lui aussi, être rejeté.
5.
Les considérants qui précèdent conduisent au rejet du recours.
Le recourant a sollicité sa mise au bénéfice de l'assistance judiciaire. La cause paraissant d'emblée dépourvue de chances de succès, cette requête doit être rejetée (<ref-law>). Les frais seront donc mis à la charge du recourant, qui succombe (cf. <ref-law>). Il n'y a pas lieu d'allouer des dépens (art. 68 al. 1 et 3 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'000 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué au mandataire du recourant, au Service des migrations et au Département de l'économie et de l'action sociale de la République et canton de Neuchâtel, au Tribunal cantonal de la République et canton de Neuchâtel, Cour de droit public, ainsi qu'au Secrétariat d'Etat aux migrations.
Lausanne, le 14 septembre 2020
Au nom de la IIe Cour de droit public
du Tribunal fédéral suisse
Le Président : Seiler
Le Greffier : Ermotti