"What is stable, and what is likely to change?" is probably one of the most useful architecture questions there is. We've been seeing something similar in BXRuntime recently. Several systems evolved independently, but once we started isolating what changes over time, a very different architecture emerged than the one we originally planned.
Great read.