Вы видимо столкнулись с типичной проблемой декомпозиции в nosql. Нужно решать в зависимости от того как эти данные в итоге будут использоваться. Если вы в итоге будете часто вытаскивать всю коллекцию, то есть смысл все данные поместить в UserProfile (если при этом данных не больше 16Мб на один документ).
Вы можете сделать одну форму, т.к поля одни и те же. Чтобы определять, что это, вход или регистрация можно использовать флаг и выводить его как hidden поле. Для валидации в экшене создавать модель с нужным сценарием.