Se inició futbolísticamente en el Deportivo Saprissa y pasó por el filial de Segunda División desde febrero de 2010 hasta diciembre de 2011. Fue cedido al Santos de Guápiles y debutó en la máxima categoría del fútbol costarricense el 15 de enero de 2012. En su primera competencia consiguió el subcampeonato del Verano. Regresó al conjunto morado para continuar su carrera en el filial, el cual cambió de nombre a Generación Saprissa. Su consolidación en la demarcación de delantero fue durante su paso por el Uruguay de Coronado, equipo al que se unió como cedido a inicios de 2014, anotando diez goles en diecinueve presentaciones, para adjudicarse con el premio al goleador del Verano de ese año. En la primera mitad de la temporada 2014-15, Moya conseguiría nueve goles y su buen rendimiento le permitió volver al Deportivo Saprissa, para tomar un puesto en el grupo absoluto. Vistiendo la camiseta morada, el futbolista marcó nueve tantos en el Verano 2015. Meses después salió a España en condición de cedido para firmar con el Huesca de la Segunda División. Luego de tener pocas oportunidades en el club, retornó al equipo que le formó en enero de 2016 y realizó tres goles. A finales de junio de ese año fue prestado a la Universidad de Costa Rica y el 30 de agosto fue enviado al Zirka Kropyvnytsky de Ucrania.
Es internacional absoluto con Costa Rica desde 2014. Ha disputado dos partidos, incluyendo la Copa Centroamericana de ese año en la que su país se coronó campeón.
Originario de Monteverde, Moya comenzó a formarse integralmente como futbolista en la posición de centrocampista, demostrando una buena estatura para el puesto. A los trece años fue invitado para participar, con la selección regional, en un partido contra el Deportivo Saprissa el cual había realizado una gira por la zona porteña. Desde ese momento, el jugador fue observado por el entrenador saprissista Edson Soto y se interesó en las cualidades de Jonathan para después reclutarlo al club. Soto confió en él y decidió cambiarle su posición para que fuera delantero centro, para ello debió enseñarle los fundamentos a partir de cero aún con otros jugadores compitiendo como atacantes.[2]
Jonathan fue asignado al equipo filial morado Saprissa de Corazón de la Segunda División, y debutó oficialmente el 3 de febrero de 2010,[3] en un partido contra Cariari por la cuarta fecha del Torneo de Clausura.
Moya fue cedido en condición de préstamo hacia el Santos de Guápiles. Debutó como guapileño el 15 de enero de 2012, en el Estadio Ebal Rodríguez, para disputar la primera jornada del Campeonato de Verano contra Herediano, donde ingresó de cambio al minuto 78' por su compañero Cristhian Lagos, en la victoria 1-0 de su club.[4]
El 1 de marzo marcó sus primeros dos goles del certamen, sobre Orión en condición de visitante, y su aporte favoreció a su equipo para la victoria 0-3.[5] Durante la fase regular, Jonathan participó durante dieciséis partidos, con dos anotaciones y tres pases a gol. Su club clasificó a la siguiente etapa del torneo tras alcanzar la segunda colocación en la tabla.[6] En el juego de ida por las semifinales, Moya participó por 34' minutos en la derrota 1-0 frente al Deportivo Saprissa, jugando de visitante en el Ricardo Saprissa.[7] Para el compromiso de vuelta, el atacante completó la totalidad de los minutos, mientras que su compañero Cristhian Lagos marcó el gol del triunfo ajustado 1-0.[8] A pesar de la igualdad en la serie global, los santistas fueron los que avanzaron a la última instancia, tras haber obtenido la ventaja deportiva en la tabla.[9] El partido de ida de la final se disputó el 13 de mayo ante el Herediano en el Estadio Eladio Rosabal Cordero, escenario en el cual Moya jugó 25' minutos. En esta oportunidad, su equipo salió derrotado con cifras de 4-2. Para la vuelta, Jonathan vio acción solo por 22' minutos, en la nueva pérdida de 1-2. Como resultado, su conjunto obtuvo el subcampeonato del torneo.[10]
Una vez finalizada la pausa de pretemporada, el 26 de julio comenzó el Campeonato de Invierno 2012 para su equipo. En la primera jornada del certamen, su club disputó el juego ante el rival de la final anterior, el Herediano en el Estadio Rosabal Cordero. Jonathan apareció en el once inicial, salió de cambio por Randall Porras al minuto 47' y el resultado terminó en derrota con cifras de 2-0.[11] El delantero marcó su primera anotación el 18 de agosto frente a San Carlos, en la goleada de 5-1.[12] Posteriormente, hizo otro gol en la octava fecha del 2 de septiembre, correspondiente al Derby caribeño contra Limón (3-2).[13] Al finalizar la etapa regular, Moya contabilizó catorce partidos efectuados, de los cuales marcó dos tantos, mientras que en cinco oportunidades esperó desde la suplencia y en dos veces no fue convocado. Por otro lado, el equipo santista alcanzó el quinto lugar de la tabla de posiciones, por lo que no logró el pase a las semifinales. Poco después, el jugador volvió al Saprissa tras el fin del préstamo.
Siendo ficha del conjunto morado, disputó el Torneo de Clausura 2013 con el filial Saprissa de Corazón, de la Segunda División. Debutó en la jornada 2 contra Osa en el Estadio Ricardo Saprissa, partido desarrollado el 19 de enero. En esa oportunidad, Moya completó la totalidad de los minutos y marcó dos goles —uno de ellos por la vía del penal— para la victoria de su club por 3-2. A finales de febrero salió del país para disputar el torneo internacional IFA Shield, en la India.[14][15] Su equipo lideró el grupo B sobre el Mohun Bagan, Pune y United Sikkim. En la semifinal del 15 de marzo contra Prayag United en el Kalyani Stadium, Jonathan concretó el tanto del empate transitorio al minuto 27', para llevar la serie a tiempos suplementarios, etapa en la que su club cayó derrotado por 1-2. De regreso en el campeonato local, hizo otro doblete el 24 de marzo, en la victoria 3-2 de local ante Coto Brus. El delantero finalizó el certamen con diez apariciones y obtuvo 847' minutos de acción.
El nombre de su equipo cambió por Generación Saprissa a partir de agosto de 2013, mientras que Moya fue seleccionado —por el entrenador Enrique Rivers— para afrontar esta temporada.[16] Debutó oficialmente en la segunda fecha del Torneo de Apertura —ya que su club estuvo libre en la jornada inaugural—, donde desarrolló el partido contra Juventud Escazuceña en el Estadio Nicolás Masís. Jonathan marcó su primer doblete del certamen a los minutos 8' y 77', para dar la victoria por 1-4.[17] Los morados fueron ubicados nuevamente en el grupo B de la tabla, y demostraron un mayor crecimiento tras avanzar a la siguiente fase como segundo del grupo y tercero en la general. Los cuartos de final se desarrollaron a mediados de noviembre contra Barrio México. Los resultados fueron de empates 1-1 y 2-2, por lo que el ganador se decidió mediante los penales, siendo su grupo el vencedor con cifras de 2-3.[18] Las semifinal de ida se dio el 30 de noviembre contra AS Puma, y el empate 1-1 prevaleció en esta primera serie —con gol de Moya al minuto 90' que evitó el revés de su grupo—.[19][20] Posteriormente, el 8 de diciembre fue el encuentro de vuelta en el que su equipo fue eliminado por la pérdida de 2-1. El delantero, por su parte, cosechó la cifra total de diez anotaciones.
Mientras Moya mantenía el vínculo con el equipo de la segunda categoría, los dirigentes del Deportivo Saprissa negociaron con el Uruguay de Coronado el traspaso del futbolista Marvin Angulo. La compra de este jugador fue efectiva el 16 de diciembre de 2013, pero en la transacción se estableció que dos miembros del plantel saprissista llegarían en calidad de cedidos a Uruguay, por lo que Moya y su compañero Dylan Flores fueron escogidos para cerrar el trato.[21] De esta manera, el atacante firmó con los coronadeños por un periodo de seis meses, con alternativa a una prórroga por la misma cantidad de tiempo.[22]
Debutó oficialmente con la camiseta aurinegra el 11 de enero, en la primera fecha del Campeonato de Verano 2014 frente al Herediano, en el Estadio El Labrador. El delantero completó la totalidad de los minutos y su equipo perdió con cifras de 1-3.[23][24] El 30 de enero, asistió a su compañero Johan Condega para la anotación ante el Deportivo Saprissa; sin embargo, fue insuficiente ya que su club volvió a ser derrotado en su estadio con cifras de 2-4.[25] En la jornada siguiente, disputada el 9 de febrero, consiguió su primer tanto contra el conjunto de Pérez Zeledón; encuentro que finalizó con empate 1-1.[26] Luego en las jornadas 9, 10 y 11 anotó tres dobletes consecutivos, frente a Limón,[27] Puntarenas[28] y Belén,[29] respectivamente. Marcó nuevamente el 23 de marzo contra el Cartaginés, en la victoria de su club 2-0.[30] En el mes de marzo, salió un supuesto rumor de que el Sevilla de la liga española estaría interesado por los servicios de Moya, sin embargo no pasó a más.[31] Siete días después, volvió a anotar, siendo esta vez sobre el Pérez Zeledón.[32] Su último gol lo obtuvo en la fecha 22 frente a Belén.[33] Jonathan terminó el torneo con diecinueve participaciones, con diez tantos concretados y una asistencia.[34] En la entrega de los Premios FPD realizada a finales de mayo, el delantero fue galardonado como el máximo anotador del certamen, compartiendo la distinción con el uruguayo Fabrizio Ronchetti y el argentino Lucas Gómez.
A mediados del año, Moya participó en el Torneo de Copa 2014, donde los charrúas compartieron el grupo D con Belén,[35][36] Herediano[37] y San Carlos.[38][39] Los resultados terminaron con dos derrotas y un empate, quedando de últimos en esta fase. Moya únicamente marcó un gol en esta competición, específicamente el 20 de julio ante los florenses.[40]
El Campeonato de Invierno 2014 para su equipo arrancó el 17 de agosto, en la visita al Estadio "Fello" Meza contra el Cartaginés. Moya, en esa ocasión anotó el gol del empate momentáneo al minuto 40', pero el resultado final fue con derrota 3-1.[41] El jugador no fue convocado por el entrenador Carlos Watson por cinco partidos seguidos, debido a deberes internacionales con la selección costarricense.[42] Regresó el 21 de septiembre, en la pérdida 3-0 ante la Universidad de Costa Rica en el Estadio Ecológico.[43][44] Jonathan logró su segundo tanto del torneo el 28 de septiembre frente al Pérez Zeledón, por la vía del penal en la pérdida de 4-2.[45][46] En las jornadas 15 y 16 hizo un gol ante el Deportivo Saprissa (2-1)[47] y de penal sobre AS Puma (1-0),[48] respectivamente. Volvió con su racha positiva marcando de forma consecutiva durante cinco partidos, contra Belén (4-2),[49] Universidad de Costa Rica (2-1),[50] Herediano (6-2),[51] Limón (1-1)[52] y Pérez Zeledón (1-0).[53] Al finalizar la etapa de clasificación, su equipo obtuvo el undécimo lugar, cerca de la zona de descenso. El delantero hizo en total nueve goles y participó en diecisiete juegos. El 24 de diciembre, se confirmó el regreso del delantero al Saprissa tras finiquitar el préstamo con los aurinegros.[54]
Una vez que regresó al club morado, fue firmado por dos años y medio y presentado el 6 de enero de 2015 —mismo día de su cumpleaños— por el gerente financiero Galeano Luconi, junto al centrocampista Néstor Monge y el defensor argentino Andrés Imperiale.[55] Tras la salida de sus compañeros David Ramírez y Carlos Saucedo de la institución, las oportunidades de Moya para jugar se elevaron de cara al Campeonato de Verano. Su primer partido se llevó a cabo el 19 de enero, en la jornada inaugural de los equipos, donde enfrentó a AS Puma en el Estadio Ricardo Saprissa y jugando 36' minutos en la victoria 3-2.[56][57] En la siguiente fecha marcó de cabeza su primer gol como saprissista y el que significó la victoria 1-0 sobre Limón.[58] Tras el fracaso de su equipo en los cuartos de final de la Liga de Campeones de la Concacaf contra el América de México —con casi nula participación de Moya—, las aspiraciones se enfocaron más en el torneo de liga. Jonathan volvió a anotar en la jornada 13 de nuevo contra Limón pero de visita en el Estadio Juan Gobán, en la victoria de su equipo 1-2.[59] El 29 de marzo hizo el tanto del descuento 1-2 en la derrota de su club contra Belén, dada en su propio estadio.[60][61] Moya logró conseguir su primer doblete con la camiseta morada tras anotarle al Pérez Zeledón en el Estadio Municipal, para la victoria 1-3.[62] Luego marcó cuatro tantos en tres partidos, frente a Uruguay (4-1),[63] Cartaginés (1-1)[64] y a la Universidad de Costa Rica (2-1) —concretando doblete—.[65] Su equipo avanzó a la siguiente etapa de líder en la tabla de posiciones.[66] El 10 de mayo se llevó a cabo el encuentro de ida de las semifinales contra Liga Deportiva Alajuelense, en el Estadio Morera Soto. El atacante esperó desde la suplencia en la pérdida de 2-0.[67] A diferencia del juego anterior, en la vuelta dada en el Estadio Ricardo Saprissa, Moya completó la totalidad de los minutos mientras que su compañero Deyver Vega hizo la única anotación para el triunfo 1-0, insuficiente en el marcador agregado de 1-2.[68] De esta manera, el delantero terminó la temporada con dieciocho tantos realizados, uno menos que el máximo goleador Jonathan McDonald.[69] El 29 de junio, la prensa italiana reveló un supuesto interés del club Empoli, de la Serie A, hacia el atacante, pero no hubo un acuerdo formal.[70][71]
El 8 de julio de 2015 comenzó el Torneo de Copa, y su equipo enfrentó a Guanacasteca por la primera fase en el Estadio Edgardo Baltodano; Moya jugó los 90' minutos y sus compañeros Keilor Soto y Ulises Segura marcaron para la victoria de 1-2.[72][73] La segunda fase se disputó cuatro días después contra el Pérez Zeledón en el Estadio Coyella Fonseca; este juego terminó empatado sin goles y el triunfador se definió por los lanzamientos de penal.[74] Su equipo fue eliminado de manera prematura tras perder con cifras de 5-6.[75]
El Campeonato de Invierno 2015 se desarrolló a partir del 2 de agosto. Jonathan quedó en el banquillo en la primera fecha frente a Belén; el marcador finalizó con victoria 0-2.[76] Posteriormente hizo su debut ante el Santos de Guápiles, encuentro que marcó el inicio de la gramilla natural del Estadio Ricardo Saprissa. Moya entró como variante por Néstor Monge al minuto 84' y su club empató con cifras de 2-2.[77] El 14 de agosto salió del país para realizar una pasantía de diez días en el Royal Excel Mouscron, de Bélgica, como parte de una invitación del club.[78][79][80] Estuvo previsto a regresar el 24 de agosto, pero cuatro días antes, la dirigencia del Saprissa acordó el préstamo de Moya al Huesca de la Segunda División de España.[81][82]
Jonathan Moya llegó al club Oscense por el periodo de un año —hasta el 30 de junio de 2016—, con opción a una posible compra por parte de los azulgranas.[83] Debutó oficialmente con el Huesca en la fecha 3 de la Liga Adelante, el 5 de septiembre ante el Tenerife en el Estadio El Alcoraz; el delantero entró al minuto 62' por Samu Sáiz y el marcador definitivo terminó en empate a una anotación.[84] El 9 de septiembre, se llevó a cabo el partido único de la segunda ronda de la Copa del Rey, en el cual Jonathan participó 4' minutos en el triunfo 0-2 contra el Mallorca.[85] El 3 de diciembre se desarrolló el juego de ida de los dieciseisavos de final ante el Villarreal; Moya quedó en el banquillo en la victoria de 3-2.[86] Tres días después, el futbolista marcó su primer tanto en la liga frente al Mirandés, en el Estadio El Toralín.[87] Sin embargo, el conjunto azulgrana sufrió una derrota de 1-2.[88] El 17 de diciembre, se dio el juego de vuelta por la copa, su equipo no logró mantener la ventaja que obtuvo anteriormente y salió con la pérdida de 2-0.[89] El 27 de enero de 2016, el Huesca anunció la baja del jugador,[90] debido a la poca regularidad que tuvo en el torneo, además de haber recibido una sanción por presentarse once días tarde a los entrenamientos después de la pausa de final de año.[91] Estadísticamente, Moya participó por siete encuentros y en trece veces no apareció en la nómina del director técnico Juan Antonio Anquela. Con esto, el futbolista regresaría al Deportivo Saprissa, club dueño de su ficha.[92][93][94]
El atacante debutó con la camiseta morada el 30 de enero de 2016, correspondiente a la cuarta fecha del Campeonato de Verano, en el compromiso de su equipo ante el Herediano, de visita en el Estadio Rosabal Cordero. En esa oportunidad, fue titular con la dorsal «34», salió de relevo por el defensor Irving Calderón al minuto 66' y el resultado concluyó en pérdida con cifras de 2-0.[95] Su primer gol en la competencia fue el 14 de febrero contra el Cartaginés, en la victoria con cifras de goleada 1-4.[96][97][98] El delantero marcaría nuevamente el 24 de febrero, en el triunfo 1-2 sobre Limón,[99] al igual que el 13 de marzo frente a Carmelita (1-3).[100][101] Al término de la etapa regular del torneo, su club alcanzó la segunda posición de la tabla con 47 puntos, por lo que clasificó a la ronda eliminatoria.[102][103][104] El 30 de abril se efectuó la semifinal de ida en el Estadio Morera Soto ante Alajuelense; el atacante entró como sustitución por Aubrey David, participó 30' minutos y el marcador terminó en pérdida de 2-0.[105] El 4 de mayo, su grupo llegó a la vuelta con la responsabilidad de revertir lo ocurrido. No obstante, el resultado finalizó de nuevo en derrota, siendo esta vez con cifras de 1-3, sumado a esto que el global fue de 1-5. Con lo obtenido en la serie, su club perdió la posibilidad de revalidar el título tras quedar eliminados.[106][107]
El 28 de junio de 2016, se hizo oficial el vínculo de Moya por un año con la Universidad de Costa Rica, en condición de préstamo.[108] En la primera fecha del Campeonato de Invierno, su equipo hizo frente al conjunto de Carmelita, el 17 de julio en el Estadio Morera Soto. Moya anotó un gol al minuto 24' y el marcador con cifras de goleada 1-4 definió el juego.[109] El 28 de julio concretó un doblete para dar el triunfo a su club 2-0 sobre el recién ascendido San Carlos.[110] En el partido del 21 de agosto contra el Santos de Guápiles en el Estadio Ebal Rodríguez, Jonathan lograría el tanto transitorio 0-1, pero luego el rival daría vuelta el marcador para que este concluyera 3-1.[111] A pesar de tener la plena confianza del entrenador portugués Guilherme Farinha, la dirigencia saprissista decidió terminar con la cesión del futbolista, para enviarlo en esta misma condición al Zirka Kropyvnytsky de Ucrania, igualmente por una temporada.[112]
Tras su llegada a territorio europeo, Moya sumaría su segunda experiencia en el balompié de este continente.[113][114] Su primer compromiso perteneciendo al equipo ucraniano se dio el 11 de septiembre, por la séptima jornada de la máxima categoría de liga. En esa ocasión, su grupo enfrentó el juego contra el Karpaty Lviv en el Estadio Zirka, mientras que Jonathan entró de cambio por Artem Sitalo al minuto 68'.[115] El marcador fue de ganancia 1-0.[116] Una semana después marcó su primer gol ante el Dnipro al minuto 94', el cual fue suficiente para la victoria 0-1.[117][118] Participó como titular por primera vez del entrenador Viktor Dohadailo, en el partido correspondiente a la tercera ronda de la Copa de Ucrania frente al Poltava en el Lokomotyv Stadium, desarrollado el 21 de septiembre. Moya alcanzó la totalidad de los minutos y su equipo quedó eliminado de la competencia debido a la derrota de 1-0.[119] Su segunda anotación en la liga fue el 16 de octubre sobre el Vorskla Poltava, en las cifras finales de 2-0 a favor de su conjunto.[120][121] Habiendo disputado doce juegos con dos goles concretados en los torneos de la temporada, el 3 de marzo de 2017, el delantero pidió su salida de manera anticipada y llegó a un acuerdo para que le dejara libre.[122] En el proceso estuvo cerca de cerrar un fichaje por un club de Israel,[123] pero al tratarse de una tercera movida en la misma temporada,[124] el reglamento establecido por FIFA le impidió su traspaso.[125] Como consecuencia, su pase internacional permaneció bloqueado, quedó sin equipo y carente de salario hasta el final del año deportivo.[126] Una vez abierta la ventana de transferencias, Jonathan regresó al Saprissa.[127]
El 24 de mayo de 2017, se hizo oficial el retorno del delantero al Deportivo Saprissa, como nuevo refuerzo para la siguiente temporada.[128] El comienzo de su conjunto en el Torneo de Apertura se produjo el 30 de julio como local en el Estadio "Fello" Meza de Cartago contra Carmelita. Por otro lado, el jugador quedó fuera de convocatoria y el marcador culminó en victoria con cifras de 4-2.[129][130][131] Luego de varias semanas de incertidumbre debido a problemas con su pase internacional,[132][133][134] Moya logró debutar formalmente el 20 de agosto en el partido frente a la Universidad de Costa Rica, en el cual ingresó de relevo por Juan Bustos Golobio al minuto 70' y aportó una asistencia a David Ramírez para el único gol del triunfo 1-0.[135][136] El 17 de septiembre, en el encuentro ríspido ante Guadalupe en el Estadio Ricardo Saprissa, Jonathan entró de cambio por Golobio al minuto 55', mientras que en el epílogo del tiempo marcó su primer tanto de la temporada y el que significó la ganancia de 1-0.[137][138] El 11 de octubre hizo la anotación del descuento sobre el Pérez Zeledón al minuto 69', insuficiente en la derrota de su equipo 1-2 en su propio estadio.[139] Su tercer gol del certamen se dio el 2 de noviembre contra Grecia en el Estadio Morera Soto, al minuto 82', para rescatar el empate de 1-1.[140][141] El 19 de noviembre colaboró con el tanto que concluyó la goleada de 1-5 sobre Liberia.[142][143] Tres días después fue titular en el duelo por la última fecha de la clasificación ante el Santos de Guápiles, puso el tanto de la igualdad transitoria al minuto 20' pero su conjunto perdió por 1-2.[144] Los saprissistas avanzaron a la cuadrangular en el segundo sitio con 43 puntos.[145] Hizo su sexto gol del certamen el 10 de diciembre, en la derrota 3-2 ante Pérez Zeledón.[146] Tres días después, vino desde la suplencia en el arranque del segundo tiempo y en cinco minutos marcó la anotación que valió la victoria 1-0 contra Herediano.[147] Al cierre de esta última etapa, el conjunto tibaseño quedó sin posibilidades de optar por el título.[148] El delantero contabilizó diecinueve apariciones, hizo siete tantos y colaboró con tres asistencias.
Con miras al Torneo de Clausura 2018, su equipo cambió de entrenador debido al retiro de Carlos Watson,[149] siendo Vladimir Quesada —quien fuera el asistente la campaña anterior— el nuevo estratega.[150] Moya arrastró una sanción en el certamen anterior por acumulación de cinco tarjetas amarillas,[151] por lo que se perdió la primera fecha del 7 de enero ante Liberia, en el Estadio Edgardo Baltodano. El resultado terminaría en victoria de los morados por 0-3.[152][153][154][155][156][157] Hizo su debut el 20 de enero, en el duelo de visita contra Herediano (derrota 1-0), tras ingresar de cambio al minuto 70' por Daniel Colindres.[158] Ante la falta de minutos en el equipo, sumado a que su contrato estaría pronto a vencer, el 5 de marzo se dieron acercamientos formales de Alajuelense —rival en clásicos del conjunto morado—, para adquirir los servicios del delantero a partir de la siguiente temporada.[159][160][161][162] Moya marcó su primer gol en el campeonato el 7 de marzo, por la fecha de reposición frente a Guadalupe (4-0), dado al minuto 86'.[163] Posteriormente, el 18 de marzo, concretaría su segunda anotación sobre el Herediano, en el empate 1-1 de local.[164] Alcanzó otra conquista el 25 de marzo en el clásico contra Alajuelense, juego en el que provocó una falta de penal y salió de cambio por lesión.[165][166] Tres días después, materializó el gol de la victoria 2-1 sobre la Universidad de Costa Rica tras definir en el área asistido por su compañero Jerry Bengtson.[167][168] Los medios de comunicación confirmaron el 2 de abril su firma con los rojinegros hasta 2020 a su vez ignorando la oferta de renovación que tenía planteada.[169][170] El 6 de mayo vino desde el banquillo y marcó de cabeza el tanto para el triunfo de visita 0-3 ante el Santos de Guápiles.[171][172] El 20 de mayo se proclama campeón de liga por primera vez en su carrera tras vencer al Herediano en la tanda de penales.[173] Moya contabilizó un total de veinte presencias en este torneo con cinco goles conseguidos. En tan solo dos días después, anuncia su salida del equipo a través de sus redes sociales donde agradeció al cuerpo técnico que tuvo al frente así como de sus compañeros con quien compartió desde su llegada a los quince años.[174][175]
Debutó con la camiseta rojinegra el 22 de julio de 2018, por la primera fecha del Torneo de Apertura de visita contra el Municipal Grecia. En este juego completó la totalidad de los minutos y concretó un doblete para la victoria de goleada por 1-4.[177] En este certamen logró afianzarse y cuajar en el equipo, para cumplir con diez anotaciones en veintitrés presentaciones.[178]
El 3 de marzo de 2019, cuando disputaba la jornada 13 del Torneo de Clausura, Moya sufrió una lesión en el tobillo que le dejó fuera por el resto de la competición.[179]
Jonathan hizo su regreso el 21 de julio de 2019, en el inicio del Torneo de Apertura con empate 1-1 frente a Guadalupe.[180] Convirtió el primer gol de la temporada el 4 de agosto sobre el Pérez Zeledón.[181] El 18 de agosto se destapó con un doblete ante Universitarios para la victoria de 4-1 de local.[182] El 1 de septiembre fue autor en uno de los tantos contra el Cartaginés.[183]
El delantero fue convocado por la Selección Sub-17 de Costa Rica para disputar la ronda previa al Campeonato de la Concacaf de 2009, desarrollada en territorio salvadoreño. El 12 de noviembre de 2008 fue su debut en el Estadio Cuscatlán, donde su país enfrentó a Nicaragua. Moya marcó un gol al minuto 87' en la ganancia con goleada de 7-0.[184] Dos días posteriores fue partícipe de la victoria 0-1 sobre Guatemala.[185] En el mismo escenario deportivo tuvo lugar el tercer compromiso, el 16 de noviembre contra el combinando anfitrión de El Salvador. El triunfo de 2-1 aseguró el liderato para los costarricenses en el grupo B, además de la clasificación de manera directa hacia el torneo de la confederación.[186]
Juan Diego Quesada, entrenador de la categoría costarricense, convocó a Jonathan para afrontar el Campeonato Sub-17 de la Concacaf de 2009, el cual se realizó en territorio mexicano.[187] El 22 de abril comenzó el certamen donde su nación tuvo como adversario a Guatemala, en el Estadio Caliente de Tijuana. En esta ocasión el empate a un tanto prevaleció al término de los 90' minutos, mientras que Moya fue suplente.[188] Dos días después fue el juego de su país contra Trinidad y Tobago, en el mismo escenario deportivo. Sus compañeros Joel Campbell, Juan Bustos y Rosbin Mayorga anotaron en la victoria de 3-0.[189] El 26 de abril fue el primer revés de los Ticos al perder 1-0 ante México.[190] Con los resultados obtenidos en esta ronda, su selección logró avanzar como segundo lugar del grupo B. Inicialmente, la serie semifinal se iba a disputar contra Estados Unidos, pero la Pandemia de gripe A (H1N1) en México ordenó a la Concacaf cancelar el torneo.[191] Por otro lado, su país clasificó directamente a la Copa Mundial.
Jonathan Moya fue incluido en la lista oficial de 21 jugadores que disputaron el Mundial Sub-17 de 2009 en Nigeria, bajo la dirección técnica de Juan Diego Quesada.[192] El primer compromiso se desarrolló el 25 de octubre contra Nueva Zelanda en el Estadio Nnamdi Azikiwe, donde el delantero permaneció en la suplencia y el marcador culminó con el empate a un gol.[193] Cuatro días después, Moya marcó el único tanto de su país en la pérdida con goleada 4-1 ante Turquía.[194] El 31 de octubre cerró su participación en la competencia en la nueva derrota con las mismas cifras, siendo esta vez el rival Burkina Faso.[195] Su nación quedó en el último lugar del grupo D con solo un punto.[196]
El 23 de noviembre de 2010, el jugador participó en la Eliminatoria al Campeonato Sub-20 de la Concacaf que tendría lugar el año siguiente. El primer encuentro se desarrolló ante Nicaragua, el cual finalizó 4-0 a favor de los costarricenses. Moya en este juego realizó un gol al minuto 59'.[197] Posteriormente su país enfrentó a Panamá, pero el marcador acabó con el revés de 1-0.[198] La selección de Costa Rica obtuvo el segundo lugar de la tabla y disputó el repechaje contra El Salvador. Los juegos de ida y vuelta terminaron 1-0 y 1-1, con triunfo de los salvadoreños, pero por asuntos reglamentarios de la FIFA quedaron descalificados al alinear a un jugador que no estaba inscrito en esa nacionalidad, por lo tanto, la escuadra costarricense ganó la serie con cifras de 3-0 en ambos cotejos, y por consiguiente clasificaron al torneo continental.
El 25 de agosto de 2014, el futbolista fue convocado por el entrenador interino de la selección costarricensePaulo Wanchope, con miras hacia la Copa Centroamericana que tomaría lugar por primera vez en Estados Unidos.[199] El 3 de septiembre comenzó la competición para su país, en el Robert F. Kennedy Memorial Stadium de Washington D. C. contra Nicaragua. Moya esperó desde la suplencia mientras que el resultado terminó en victoria 3-0.[200] Posteriormente se dio el encuentro contra Panamá en el Estadio Cotton Bowl de Dallas. A pesar de tener el marcador en contra 0-2, el conjunto Tricolor logró el empate y definitivo 2-2.[201] Con esto terminó de líder con cuatro puntos y clasificó a la última instancia de la copa.[202] El 13 de septiembre se desarrolló el juego de la final ante Guatemala en Los Angeles Memorial Coliseum. En esta oportunidad, Moya debutó como internacional absoluto tras ingresar de cambio por David Ramírez al minuto 90', y sus compañeros Bryan Ruiz y Juan Bustos concretaron los tantos para la victoria 1-2 para coronar a su grupo campeón por octava vez en su historia.[203]
El 1 de junio de 2015, Wanchope dio a conocer la lista de jugadores para enfrentar los partidos amistosos contra Colombia y España, el 6 y el 11 de junio, respectivamente.[204] En el primer partido contra la selección colombiana, realizado en el Estadio Diego Maradona en Argentina, Moya apareció como titular e hizo la dupla ofensiva con Jonathan McDonald,[205] pero salió de relevo por Elías Aguilar al minuto 67' y el marcador acabó en derrota 1-0.[206] Luego, en el compromiso frente a los españoles en el Estadio Reino de León, el atacante permaneció en el banquillo en la pérdida de 2-1.[207][208]
El 31 de agosto de 2018, Moya regresa a una convocatoria de selección, esta vez dirigida por el entrenador interino Ronald González. El delantero ocupó el lugar que dejó Joel Campbell quien sufrió una lesión.[209] Para los fogueos del mes de septiembre, Jonathan tuvo participación por 4' y 34' minutos en las derrotas frente a Corea del Sur (2-0)[210] y Japón (3-0).[211]
El 28 de agosto de 2019 entró en la lista del seleccionador Gustavo Matosas para enfrentar un amistoso.[212] El 6 de septiembre disputó el partido celebrado en el Estadio Nacional contra Uruguay, donde ingresó de relevo por José Guillermo Ortiz al minuto 59' y el marcador finalizó en pérdida por 1-2.[213]