У меня есть несколько ответов на ваши вопросы - по крайней мере, с моей точки зрения. Ответы на подобные вопросы действительно зависят от вашего опыта и предпочтений.
1) Я бы сказал, что ненавязчивый JavaScript приведет к уменьшению общего кода, особенно если вы повторно используете методы JavaScript.
2 & 3) Я собираюсь пойти с ненавязчивым JavaScript для обоих из них. Когда JavaScript отделен от структуры страницы, у вас есть лучшее представление о том, что делает этот конкретный фрагмент кода, и вы можете его протестировать, а также знаете, что у вас есть тесты для этих методов. Смешанный код обычно (по моему опыту) намного сложнее получить хорошее тестовое покрытие. Это поможет сохранить код менее подверженным ошибкам.
Одна из проблем с развязанными js - если вы удалите функцию, вы можете оставить код позади или удалить зависимый код. Конечно, именно поэтому у вас должны быть автоматизированные тесты и хорошее покрытие.
4) Я думаю, что встроенный js легче понять, потому что все в порядке, но что-то над одной строкой, и вы уже снижаете читабельность, так что вы могли бы просто пройти ненавязчиво до конца для других преимуществ. Ненавязчивый js также упрощает поддержку и документирование для других членов команды.
5) По моему опыту это стирка. Вы должны предоставить дополнительные методы в любом случае.
В качестве заключительного замечания я согласен с тем, что Rails 3 также обеспечивает гораздо лучшую поддержку ненавязчивых js, и я считаю, что это лучшая практика. Я только начал исправлять старое приложение для клиента, и со смешанными представлениями html, js, logic у меня было действительно трудно понять, чего они пытаются достичь. Если бы вещи были отделены друг от друга, было бы намного легче принять.
Надеюсь, это поможет.