Why BSD eval cannot run gtime?
gtime can't execute/time commands definied internally by the shell. Commands are executed using the exec() system call, but the system call basically only knows about commands with binaries (e.g. in /usr/bin). Builtin commands are included in the shell binary, there is no way for exec() to execute them.

You need to either find a way to execute the command without relying on shell builtins or use the internal time command of your shell. One option might (should work, but I have no means of testing it right now) be to run a new shell within gtime 

gtime bash -c 'eval $(echo sed $(for i in 1 2 3 5; do echo "-e ${i}p"; done) -n data.txt)'


The timing will be slightly off because the time required to run a new shell is included, but you can measure that seperately by running gtime bash -c ':'.