Well, yes, and indeed the modification of u8g_Delay() is more a workaround (or hack) instead of a good solution. To excause the current situation a little bit: I never read in the Arduino documentation that some of the procedures are not valid to be called during constructor time. And on the ATMEGA it was never a problem to call digitalWrite() or delay() in the constructor.
you don't need to justify, initializations (with digitalWrite and delays) in the constructors should be legal.
The issue here is that delay() didn't work until the Arduino initialization is done in main() and C++ starts constructors of static objects before
the main! I got some problems with the LiquidCrystal library because of that:https://github.com/arduino/Arduino/blob/master/libraries/LiquidCrystal/LiquidCrystal.cpp#L27
and the solution was:https://github.com/arduino/Arduino/commit/d994e48c5565a0c7aea54384a1b15a19623fe209
but for some reason the scheduler has still some interactions I didn't considered that should be looked into.
So, in the end, consider my previous post just a hint to workaround these troubles...