Нашел интересное решение. Может кому-то пригодится.
Было два основных вопроса:
1) как "подружить" вспомогательные компоненты с основным.
2) как вывести чекбоксы выбора компонентов и их уникальные настройки.
По первому вопросуЗавел специальную табличку в основном компоненте, где и регистрируем "дружественные" компоненты. Хоть через script.php дочерних компонентов, хоть вручную (сделал специальные вьюшки в админке для управления компонентами).
По второму вопросу(спасибо 
Jonathan M. Cameron)
В дочерних компонентах делаем специальную вьюху для вывода настроек (можно добавить контроллер и модель, но это пожеланию)
Во вьюхе делаем функцию 
display такого вида:
	public function display( $tpl = null )
	{
		$result = $this->loadTemplate($tpl);
		if ($result instanceof Exception)
		{
			return $result;
		}
		
		return true;
	}
Обратите внимание, что мы в ней загружаем шаблон, а не вызываем одноименную родительскую функцию.
И еще в этом виде добавляем функцию 
getOutput	public function getOutput()
	{
		return $this->_output;
	}
После этого в функции получения списка записей (
getItems) делаем такую обработку
		if(!empty($items))
		{
			foreach ($items as $item)
			{
				$item->notifiers = array();
				$eventParams = new JRegistry($item->params);
				foreach ($eventParams->get('notifiers') as $component )
				{
					// get current view
					$view = $this->getNotifierView($component);
					// set requered data to view
					$view->set('myvar', $item->id);
					// Get the view to generate the display output from the template
					if ( $view->display() === true ) {
						// Display or return the results
						$output = $view->getOutput();
					}
					else{
						$output = '';
					}
					$item->notifiers[] = $output;
				}
			}
		}
Так мы получаем все нужные настройки соответствующих компонентов, которые мы сможем сохранить в наш профиль.
Здесь используется функция 
getNotifierView(), отвечающая за подключение соответствующего вида:
	protected function &getNotifierView($component)
	{
		if(!array_key_exists($component, $this->notifierViews))
		{
			$prefix = substr($component, 4);
			$className = $prefix .'ViewUserParams';
			// include required class
			require_once(JPATH_SITE .'/components/'.$component.'/views/userparams/view.html.php');
			//JLoader::register($className, JPATH_SITE .'/components/'.$component.'/views/userparams/view.html.php');
			if(!class_exists($className, false)){
				throw new Exception('There is no required class of notifier view.', 500); // TODO: translate the message
			}
			$this->notifierViews[$component] = new $className(array('base_path'=> JPATH_SITE .'/components/'.$component));
		}
		return $this->notifierViews[$component];
	}
Как-то так.
Все остальное как обычно. Но если что-то не понятно -- спрашивайте.
Осталось доделать сохранение данных, но это уже мелочи.