Я думаю, что 2 лучше. Поместите каждую «страницу» в представление, а затем просто чередуйте их показ и скрытие. Делает это тривиально, чтобы сделать хорошие переходы. Какое состояние вы думаете о поддержании? Единственное, что не работает автоматически, это фокус, и я думаю, что вы, вероятно, захотите сбросить его каждый раз, когда вы переключаете страницы. Также легко отследить, если вы считаете, что это правильное поведение для вашего приложения.
С 1 вы можете повторно использовать почти весь ваш код (просто определите свой собственный класс WizardBase), но я думаю, что действия гораздо медленнее запускаются (и требуют больше памяти), чем переключение между представлениями.