показывает другой ip-адрес по сравнению с тем, который показывает 2ip.ru
JS не знает, через какие гейты пойдет запрос на 2ip.ru, да хотя бы и браузерный прокси
2ip.ru не знает, какой из частных адресов ( те самые 10.*.*.*, 192.168.*.*) достался хосту с запускаемым JS
иногда, когда волей маршрутизации и провайдера, IP совпадают (на мобильниках могут) - JS и 2ip.ru будут показывать одинаково