The previous answers are confusing the issue. The problem is not "mapfile fails to remove a trailing newline", because there is no trailing newline to remove. It's true that the -t option here means to remove trailing delimiters (here, the tabs), not trailing newlines. And it does remove the trailing tabs. But there were no newlines to begin with, so mapfile is not failing to remove anything.
(As far as I can tell, null delimiters are a special case; they'll effectively be removed even without -t.)
The problem is, instead: "echo adds a trailing newline". mapfile has already run at this point, and can't do anything about that.
(Without -t, there would be a trailing tab followed by newline on each echoed entry; the tab may be hard to observe in the terminal - although it's easier if you suppress the newline.)
We can see the problem by directly creating an array in Bash instead:
$ a=(1 2 3)
$ for num in "${a[@]}"; do echo "$num"; done
1
2
3
The output numbers appear on separate lines, not because echo is used multiple times, but because each run of echo actually has to output the newline.
To avoid this, we can for example use:
$ for num in "${a[@]}"; do printf '%s' "$num"; done
123$
Notice that the prompt appears on the same line as the output.
The "${Link[1]%$'\n'}" trick will not work for the situation described, because again, the newline is not in the data nor created by the shell interpolation, but emitted separately by echo:
$ echo "${a[0]%$'\n'}"; echo "${a[1]%$'\n'}"
1
2
$ printf '%s' "${a[0]}"; printf '%s' "${a[1]}"
12$
IFS=$'\t' read -ra Link < <( ... )might suit your purpose better