ruby関連の知識がないのでご質問内容を正確に把握できていなければすみません。
コメントにてログインシェルがzshとのことですが、PATHの設定を\${ZDOTDIR:-\${HOME}}/.zshenvで行なっているようでしたら、期待したPATHにならないのは/usr/libexec/path_helperが原因かもしれません(詳細 man path_helper)。
macOS、zshのログインシェルの場合特に設定していなければおそらく(.zshenvより後に)/etc/zprofileがsourceされ その中で
eval `/usr/libexec/path_helper -s`
されるようになっています。(このpath_helperが追記でご指摘の/etc/pathsを読む)。
/etc/pathsを書き換えるのは少々強引ですが、他の対応策としては.zshenvで一旦 unsetopt global_rcs などで /etc/zprofile をスキップし、.zshrcなどでスキップした
# system-wide environment settings for zsh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
を実行した後からPATHをお好きな順に設定する。などがあります。
こちらの記事が詳しいです。
(記事自体の趣旨はご質問と関係ありませんが、path_helperに関する手順が解説されているので載せておきます。)
(追記)
すみません、vimの中のターミナルというと起動するのはログインシェルではないのでしょうか?
(&shellの設定にはどうなっていますか? /(usr/local)/bin/zsh\ -lの様に-lオプションが入っていなければインタラクティブだがログインシェルでないzshが起動するのではないでしょうか?)
$ zsh (-i)
==> インタラクティブな非ログインシェルが起動
$ zsh -l
==> ログインシェルから(新たな)ログインシェルが起動
ログインシェル以外ですとデフォルトではzshenv以降(zprofile、zlogin)を読まないはず(path_helperを読まないはず?)ですね。
vimの中と外でPATHが違うとのことで、気になりました。