There is absolutely no excuse for the digitalWrite() farce. You can speculate whether it's "good enough" "for the job" or not, but this is all meaningless, it doesn't need to be that way, there is no benefit for it to be that way, and it wouldn't have been any harder to do it properly. (Similarly, there would have been no extra work alingning the 0.1" pin headers to 0.1" grid so you could connect them to a breadboard.)
For a beginner artist not interested in low-level stuff, it would be much easier if such basic building block worked without exposing the user to said low level ("why the heck is this taking so long??") The entire conundrum just wouldn't exist, it would "just work".
They do run the entire code through their own preprocessor anyway - could have just made a simple implementation to replace digitalWrite(123) with PORTx = xyz; operation. Basically run the same digitalWrite() logic during the preprocessing. Heck, just auto-including the exact current digitalWrite() implementation defined as a static function to the project would likely make the compiler just optimize it away completely.
The fact they couldn't do that and ever fix this trivial thing shows perfectly how it was a "designed in a few days" project with absolutely zero interest in maintaining it or making it any better, just generate as much money with large-scale guerilla marketing as possible.
Note these are just the cold facts, not opinions about whether all this is "good" or "bad". On that matter, I think Arduino has done much more good than bad, especially being the "stepping stone" on way to start designing electronics and writing embedded software, hobby or professional. On the other hand, people who insist, no matter what, how Arduino somehow "must" be the way electronics and embedded systems are designed, despite that even the Arduino company itself understands it's just a stepping stone for non-programmers, non-electronic-designers, are severely hindering people who started with Arduino, from going forward.
Because when you really start hitting the limits, and that happens pretty soon, you are wasting colossal amount of time trying to figure out why every single Arduino feature is the way it is, and how to work around it. Looking at "how others do things" is educational, but it pays off to use a bit more professionally designed projects as references. There is not much design behind Arduino.