I believe the problem is that the SSD1306 has a 128 x 64 bit array of RAM that maps directly to the 128 x 64 pixels on the display. The SH1106 has a 132 x 64 bit RAM array that maps onto the same 128 x 64 pixel display, so there are an extra 4 bits of RAM per row that aren't used. The code changes compensate for this difference by skipping those extra bits when writing rows to the screen.
If you wanted to modify the Arduboy2 library, you would have to change the display initialization and paintScreen() functions in the same way as was done for the Arduboy library.
You can't just swap in the Arduboy library's core.cpp. They have diverged too much since these changes were made.
I haven't researched it enough to be sure, but you may be able to get away with just initializing the display in a different way.
If anyone is interested in looking into this, the datasheet for the SH1106 is here: