<?php

$text = "123|@rand(тест {@rand(номер 1234|номер 4321)}|строка||";
print_r(preg_split('~{@\w+\(.*?\)}(?![^|])(*SKIP)(*F)|\|~u', $text));
