I can't speak to how efficient this is, but since I'm using PowerShell Core 7.1.3, I can't use Workflows or ForEach -Parallel, but I can use ForEach-Object -Parallel, so I tried it just to see what would happen...
Get-ChildItem -Path C:\ -Filter log*.txt |
ForEach-Object -Parallel {
Get-Content -Wait -Tail 10 -Path $_
} -ThrottleLimit 30
In my case, I had 27 files I needed to monitor, so I chose a number just above that, and this seemed to work.
Just to be sure it was working, I used this, which will output the source file name before each line:
Get-ChildItem -Path C:\ -Filter log*.txt |
ForEach-Object -Parallel {
$file = $_;
Get-Content -Wait -Tail 10 -Path $file |
ForEach-Object { Write-Output "$($file.Name): ${_}" }
} -ThrottleLimit 30