Non funziona perchè hai fatto un errore concettuale di base: I controlli aggiunti tramite il metodo LoadControl non vengono memorizzati automaticamente nella pagina durante i postback. Il che vuol dire che debbono essere sempre creati.
Ho fatto una pagina di prova. Non ho mai usato gli UC in questo modo, ma sembra funzionare. In pratica, l'UC è semplicemente:
codice:
<tr>
	<td>
		<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
	</td>
</tr>
ed ha una proprietà pubblica:
codice:
    Public Property Testo$()
        Get
            Return Me.TextBox1.Text
        End Get
        Set(ByVal Value$)
            Me.TextBox1.Text = Value
        End Set
    End Property
La pagina ospitante, ha tre pulsanti:
1) refresh, per simulare il postback generico
2) aggiungi controllo
3) togli controllo

codice:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="a.aspx.vb" Inherits="corso_apogeo.a"%>
<%@ Register TagPrefix="uc1" TagName="UCriga" Src="UCriga.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
	<HEAD>
		<title>a</title>
		<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
		<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
		<meta content="JavaScript" name="vs_defaultClientScript">
		<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
	</HEAD>
	<body MS_POSITIONING="FlowLayout">
		<form id="Form1" method="post" runat="server">
			

<asp:button id="Button1" runat="server" Text="Aggiungi riga"></asp:button>
			<asp:button id="Button2" runat="server" Text="Togli riga"></asp:button></P>
			

<asp:linkbutton id="LinkButton1" runat="server">Refresh</asp:linkbutton></P>
			<table border="1">
				<asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder>
			</table>
		</form>
	</body>
</HTML>
Il codice sottostante è:
codice:
Public Class a
    Inherits System.Web.UI.Page

#Region " Codice generato da Progettazione Web Form "

    'Chiamata richiesta da Progettazione Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents PlaceHolder1 As System.Web.UI.WebControls.PlaceHolder
    Protected WithEvents Button2 As System.Web.UI.WebControls.Button
    Protected WithEvents LinkButton1 As System.Web.UI.WebControls.LinkButton

    'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
    'Non spostarla o rimuoverla.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
        'Non modificarla nell'editor del codice.
        InitializeComponent()
    End Sub

#End Region

    Private n_righe% = 0
    Private testo$(-1)

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Inserire qui il codice utente necessario per inizializzare la pagina
        Dim o As Object = Me.ViewState("n_righe")

        If o Is Nothing Then
            n_righe = 0
        Else
            n_righe = CInt(o)
            testo = DirectCast(ViewState("testo"), String())
        End If

        For i As Integer = 1 To n_righe
            Dim uc As UCriga = DirectCast(LoadControl("UCriga.ascx"), UCriga)
            uc.Testo = testo(i - 1)
            Me.PlaceHolder1.Controls.Add(uc)
        Next




    End Sub

    Private Sub AggiungiRiga(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim uc As UCriga = DirectCast(LoadControl("UCriga.ascx"), UCriga)
        n_righe += 1
        Me.ViewState("n_righe") = n_righe

        ReDim Preserve testo(n_righe - 1)
        testo(n_righe - 1) = uc.Testo
        Me.ViewState("testo") = testo

        Me.PlaceHolder1.Controls.Add(uc)

    End Sub


    Private Sub TogliRiga(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If n_righe = 0 Then Exit Sub

        n_righe -= 1
        Me.ViewState("n_righe") = n_righe

        ReDim Preserve testo(n_righe - 1)
        Me.ViewState("testo") = testo

        Me.PlaceHolder1.Controls.RemoveAt(n_righe)

    End Sub
End Class
Naturalmente ci saranno modi migliori per fare questo; il mio è solo un esercizio.