Прежде всего, iframes и jsonp не являются взаимоисключающими: одно - средство визуализации, другое - средство связи.
Ваш выбор скорее между включением в документе (то есть созданием виджета в DOM хоста) или включением в iframe (то есть созданием нового отдельного DOM для виджета).
Преимуществом iframe является песочница: нет столкновения между вашим виджетом, javascript и css хоста. Это означает, что вы можете безопасно:
- использовать / определять любую библиотеку JavaScript, которую вы хотите
- использовать простой HTML-код вместе с простыми правилами CSS (что является очевидным бонусом для обслуживания)
Что касается недостатков:
- iframe имеет большой вес и может серьезно замедлить рендеринг главной страницы
- iframe также будет потреблять гораздо больше памяти и ресурсов, что может быть проблемой, если страница хоста предназначена для мобильных телефонов
Так что, если разумно предположить, что люди, использующие ваш виджет, захотят «адаптировать» свои страницы для него, идите по пути документа. Если нет, используйте iframe, но понимайте ограничения.
Что касается вопросов SEO, то пока вы динамически создаете виджет (будь то в документе или с фреймом), поисковые системы его не увидят. Я не знаю, если это то, что вы хотите, но это то, что вы получите;)