I think, the problem is, that the second for loop must not start with one but has to start with zero, i. e. :
for (size_t i = 0; i < m_Pages.GetCount(); ++i)
m_pWizard->GetPageAreaSizer()->Add(m_Pages[i]);
The first for loop starts with 1 because it uses m_Pages[i - 1], but the second one needs to start with i = 0. If you do it, like the patch suggests, only the first page is being considered and the dialog can be too small after clicking "Next" (it happened, when I tried it with a dialog, where the welcome message wasn't skipped). If the method looks like the following, all goes well:
void Wiz::Finalize()
{
// chain pages
for (size_t i = 1; i < m_Pages.GetCount(); ++i)
wxWizardPageSimple::Chain(m_Pages[i - 1], m_Pages[i]);
// allow the wizard to size itself around the pages
for (size_t i = 0; i < m_Pages.GetCount(); ++i)
m_pWizard->GetPageAreaSizer()->Add(m_Pages[i]);
m_pWizard->Fit();
}