Если вы уверены, что отношение объекта к поддомену всегда будет взаимно-однозначным, я бы выбрал вариант 1. Если в будущем объекты могут быть связаны с несколькими поддоменами, вы должны использовать вариант 2. ЭтоЭто приводит к дополнительным накладным расходам, но с ним легко справиться, если использовать что-то вроде cancan.
Я бы держался подальше от варианта 3 по упомянутым вами причинам.Rails плохо работает с несколькими базами данных, и, кроме того, использование нескольких баз данных в одном приложении не гарантирует большей безопасности, чем другие варианты.