Boa tarde,
Faz todo o sentido a variável aParam02 possuir valores quando N estiver igual a dois, visto que na iteração anterior você atribuiu a referência de aParam02 para a aParam03:
aParam03 := aParam02
Esse tipo de atribuição faz uma cópia da referência do array e não de seus valores, logo ao alterar os valores da aParam03, isso também será alterado em aParam02:
IF LEN(aParam03) == 0
AADD(aParam03, N * 1)
AADD(aParam03, N * 2)
AADD(aParam03, N * 3)
ENDIF
Se você deseja trabalhar com os valores do array em outra variável, sem que a principal tenha seus valores alterados, você precisa fazer uma cópia do array, isso é feito com a função aClone:
aParam03 := aClone( aParam02 )
Com isso, seu código deverá ficar da seguinte forma:
#INCLUDE "TOPCONN.CH"
#INCLUDE "PROTHEUS.CH"
USER FUNCTION AJUSTE10
LOCAL aParam01 := {"A","B"}
U_AJUSTE11(aParam01)
RETURN
USER FUNCTION AJUSTE11(aParam01,aParam02)
LOCAL N := 0
LOCAL aParam03 := {}
DEFAULT aParam02 := {}
FOR N := 1 TO LEN(aParam01)
aParam03 := aClone(aParam02)
IF LEN(aParam03) == 0
AADD(aParam03, N * 1)
AADD(aParam03, N * 2)
AADD(aParam03, N * 3)
ENDIF
aParam03 := {}
NEXT N
_DEBUG_ := .T.
RETURN
Obs.: A atribuição de valores com IGUAL copia a referência em variáveis do tipo array e também do tipo objeto.