Sinceramente non ne so molto di ajax.net. Però ho fatto una prova semplificando il tuo codice.

Al primo click dell'elemento creato da codice parte la richiesta ajax; al secondo ricarica la pagina; al terzo riparte ajax, ..., e così alternativamente.

Allora ho sostituito la creazione dello AsyncPostBackTrigger ed ho messo, per ogni elemento creato:

ScriptManager.GetCurrent(Page).RegisterAsyncPostBa ckControl(lb)

e sembra funzionare.

Il codice di prova è questo:

codice:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        CreaLink()

    End Sub



    Private Sub CreaLink()
        Dim lb As New LinkButton()
        lb.Text = "LinkButton1"
        AddHandler lb.Click, AddressOf mioEventoClick1
        Me.PlaceHolder1.Controls.Add(lb)

        ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(lb)

        Me.PlaceHolder1.Controls.Add(New LiteralControl("&_nbsp;&_nbsp;&_nbsp;"))

        lb = New LinkButton()
        lb.Text = "LinkButton2"
        AddHandler lb.Click, AddressOf mioEventoClick2
        Me.PlaceHolder1.Controls.Add(lb)

        ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(lb)
        'If Not Me.IsPostBack Then
        'Dim trigger As New AsyncPostBackTrigger()
        'With trigger
        '    .EventName = "click"
        '    .ControlID = Me.PlaceHolder1.Controls(0).UniqueID
        'End With
        'Me.UpdatePanel1.Triggers.Clear()
        'Me.UpdatePanel1.Triggers.Add(trigger)

        'End If

    End Sub

    Private Sub mioEventoClick1(ByVal sender As Object, ByVal e As EventArgs)
        Me.Label1.Text = DateTime.Now().ToString
    End Sub

    Private Sub mioEventoClick2(ByVal sender As Object, ByVal e As EventArgs)
        Me.Label2.Text = DateTime.Now().ToString
    End Sub