strace sends its output to stderr by default.
Here, you could do:
strace -o >(grep --color open >&2) zsh
To run zsh while seeing all system calls that have open anywhere in the name or arguments or return value or:
strace -e /open zsh
(short for strace -e trace=/open zsh) or:
To see the system calls that have open in their name (such as open, openat, pidfd_open, mq_open, open_by_handle_at, perf_event_open list might not be accurate depending on what system and version thereof you're on).
Or:
strace -e open,openat zsh
For only those two system calls.
That output goes to the terminal along with the shell's prompt and command outputs. You may prefer to send it to a file that you can inspect later on or live in a separate terminal or screen/tmux pane:
strace -o >(grep --color open > strace.log) zsh
strace -e /open -o strace.log zsh
To also strace calls made in child processes (including by commands executed there and their children), you'd need the -f option.
So see what opens your ~/.xinitrc (which has nothing to do with zsh) and when, you can use the audit system (may not be installed/enabled by default on your system).