Зависит от сценария.
Когда использовать какой метод для регистрации
Какой метод использовать для регистрации BroadcastReceiver, зависит от того, что ваше приложение делает с системным событием. Я думаю, что в принципе есть две причины, по которым ваше приложение хочет знать о системных событиях:
Ваше приложение предлагает какие-то услуги в связи с этими событиями
Ваше приложение хочет любезно реагировать на изменения состояния
Примерами для первой категории являются приложения, которые должны работать сразу после загрузки устройства или запускать какую-либо работу при установке приложения. Battery Widget Pro или App2SD являются хорошими примерами для таких приложений. Для этого типа вы должны зарегистрировать BroadcastReceiver в файле манифеста.
Примерами для второй категории являются события, которые сигнализируют об изменении обстоятельств, на которые может положиться ваше приложение. Скажем, ваше приложение зависит от установленного соединения Bluetooth. Вы должны реагировать на изменение состояния - но только когда ваше приложение активно. В этом случае нет необходимости в статически зарегистрированном приемнике вещания. Динамически зарегистрированный был бы более разумным.
Есть также несколько событий, на которые вам даже не разрешено статически регистрироваться. Примером этого является событие Intent.ACTION_TIME_TICK, которое транслируется каждую минуту. Что является мудрым решением, поскольку статический приемник излишне разряжает батарею.