I suspect the reason for this is:
Calling counsel-switch-buffer is triggering a window configuration change.
window-configuration-change-hook contains window--adjust-process-windows to "Update process window sizes to match the current window configuration", which calls set-process-window-size for each process in each affected window, which talks ...
Windows Emacs cannot pass pseudo terminal device file to inferior bash/zsh, which is required for such shells to work interactively.
There is a software called "fakecygpty" that provides pseudo terminal to Emacs inferior shell. (https://github.com/d5884/fakecygpty/)
You can use that for Windows Emacs to work with MSYS2 shells.