Ответ кроется в том, кто его мать.
Джон — сын Рейегара Таргариена и Лианны Старк (родной сестры Неда Старка). То есть он наполовину Таргариен, наполовину Старк. А у Старков — тёмные волосы и серые глаза. Лианна не была исключением.
Таргариены выглядели настолько узнаваемо (серебряные волосы, фиолетовые глаза) не из-за какой-то магии, а потому что веками заключали браки внутри своей семьи — между братьями и сёстрами, дядями и племянницами. Это сохраняло «чистоту» валирийской крови и внешность. Но стоило Таргариену завести ребёнка с кем-то из другого рода — внешность потомка уже не была гарантированно «таргариеновской».
Кстати, в самом сериале работает похожая генетическая логика. Вспомните: Нед Старк обнаружил, что дети Серсеи — не от Роберта Баратеона, именно потому что они были светловолосыми. У всех законных Баратеонов на протяжении поколений были чёрные волосы — «семя сильно», как говорилось в книге, которую изучал Нед. Тёмный цвет волос всегда доминировал.
С Джоном ровно та же история, только наоборот: гены Старков «победили» гены Таргариенов. Именно поэтому Джон похож на Старка, а не на Таргариена. И именно поэтому Нед Старк мог так долго выдавать его за своего незаконнорождённого сына — внешнее сходство делало эту легенду убедительной.
Так что чёрные волосы Джона — не ошибка сценаристов, а вполне логичная деталь, вписанная в правила мира, который создал Джордж Мартин.