Z tego co pamiętam "he visto" to taki odpowiednik angielskiego "have seen" - czyli używany wtedy, gdy przeszłość ma związek z teraźniejszością. W takiej sytuacji ta konstrukcja powinna być właściwa nawet w kastylijskim.
Jeśli jednak chce się powiedzieć "widziałem cię" - stwierdzenie faktu i nic więcej - prawidłowa jest "te vi".
Dlatego napisałam, że obie wersje są ok. Przynajmniej ja tak to widzę, ale nie będę się spierać bo ekspertem nie jestem :)
W wersji latynoamerykańskiej natomiast często się zastępuje "vi" przez "he visto", ale to osobny temat.