The way you've substituted "BSD" for macOS really doesn't make sense. Yes, there is BSD code in MacOS, quite a bit of it in fact. But they're not the same thing.
For 99% of other things that run in a terminal, you can get it to work in FreeBSD/macOS. Also, for Python folks, there is anaconda distribution that is agnostic to the underlying OS. Ditto for node or ruby development. Also Gui Emacs and vi have decent ports to macOS.
That said, I guess if you are doing some custom server side development that really needs Linux, you will have a hard time with M1 - virtualization and emulation don’t mix and your code might not be portable enough.
Personally, I have very frequently had the experience that Unixy stuff that "just works" on *BSD or Linux does not work on Mac straight away, or breaks with a new OS release, etc. It takes effort for the homebrew folks or the macports folks or whatever to keep stuff working.
What's left is a few major runtimes (OpenJDK, golang is waiting for 1.16 to be released). Many of the packages that are not properly supported either require golang [4], rust [2], mono [3] or java to support arm64.
It's impressive the amount of work Apple has done behind the scenes get M1 support in many open source packages, [1] for example.
[0] https://github.com/Homebrew/brew/issues/7857
[1] https://github.com/Unity-Technologies/mono/commit/3f2278e081484e6616ee5892895f999610453ca9
[2] https://github.com/rust-lang/rust/issues/73908
[3] https://github.com/mono/mono/pull/20014
[4] https://github.com/golang/go/issues/38485