Плохо ли изменять (дополнять) прототипы встроенных объектов JavaScript?
Ситуация более реалистичная:
Вы пишете библиотеку А и решили реализовать String.ptototype.toURL
Кто-то другой пишет библиотеку B и тоже реализует эту функцию.
Вы подключаете библиотеку B в свой проект и пытаетесь понять, почему написанная вами функция работает не так как задумано.
Отвечу не популярно и даже радикально. Расширение прототипов существующих объектов - это собственно основа наследования в языке. Поэтому полагаю, что с точки зрения "анатомии" самого языка такой подход более чем правильный. 
Однако в реальной жизни это рождает больше проблем, чем дает решений. А методика "оборачивания" объектов, аля jQuery, выглядит более безопасно в целом и частности.
Вообще похоже что никто так и не разобрался как "готовить" прототипное наследование и какие у него преимущества. Поэтому js в итоге скатился на самопальные "конструкторы", а в новом стандарте теперь и классы.