It seems that it's an issue with screen.
I commented out invocation of vs_status in server.sh and it ran without any errors. Then I ran 'bash -x ./server.sh command "/stop"' and got
+ as_user 'screen -p 0 -S vintagestory_server -X eval '\''stuff "//stop"\015'\'''
+ '[' vintagestory = vintagestory ']'
+ bash -c 'screen -p 0 -S vintagestory_server -X eval '\''stuff "//stop"\015'\'''
*** buffer overflow detected ***: terminated
then tried to run 'screen -p 0 -S vintagestory_server -X eval '\''stuff "//stop"\015'\''' standalone and got the same outcome.
Quick search and I found https://gitlab.archlinux.org/archlinux/packaging/packages/screen/-/issues/2 so I guess we can rollback to older screen, patch it or wait for update.
Running directly via dotnet works just fine if you don't mind having perpetually opened terminal session.