Sounds like your goal is to allow hacks with all-custom regions? Otherwise I'd suggest leaving the maps and trainers in. It would save time for people who want a Johto hack or a Crystal sideshow hack. Plus some events and things refer to particular maps or trainer IDs. For example, the roam_map tables in engine/wildmons.asm, certain radio stations in engine/radio.asm, event/basement_key.asm, event/bug_contest_judging.asm, main.asm:PlayBattleMusic... So if you're removing the Johto data, be sure to update all those places, and document them so hackers can easily put in their own data IDs and have the events work. (Some you could just remove. Like event/basement_key.asm, it's simple to rewrite if needed, and I think it could even be done without assembly, just scripting commands.) (Do not said "do not said asm".)
If you do remove maps and trainers, then also remove the event flags and engine flags that are no longer needed. Stuff like EVENT_BEAT_SWIMMERF_WENDY or ENGINE_ROCKETS_IN_RADIO_TOWER.
There are also optimizations you can make to save more space. Look through the commits I've made to pokeorange for ideas. Some I can recall:
• Replace "call X; ret" with "jr X" or "jp X"
• Remove useless jumps
• Replace "ld b, M; ld c, N" with "lb bc, M, N" (same for de and hl)
• Combine identical blocks, like "Foo: ret; Bar: ret" can become "Foo: Bar: ret"
Other useful features:
• Port Polished Crystal's trainers/read_party.asm, which lets you put trainer data in multiple sections, and makes it easy to have any combination of (item, DVs, nickname, moves) for each party.
• Add the Fairy type, and use the four unused move slots for damaging Fairy moves.
• Fix Crystal's bugs and glitches, like the Apricorn balls' catch rates, level 1 experience underflow
• Fix SPRITEMOVEDATA_LAPRAS so that it's constrained to the NPC's walk radius, and add SPRITEMOVEDATA_SWIM_UP_DOWN and SPRITEMOVEDATA_SWIM_LEFT_RIGHT.
• Consider porting later gens' features from Polished Crystal, TPP, or Prism. Little things like Running Shoes, auto-reusing Repel, level 1 Eggs, larger default Bag pockets, etc.
• Add music with public asm by Mmmmmm and ShantyTown (with their permission).
• If you don't care about linking with the official games, you have more leeway to reorganize things. The items are disorganized and have many unused slots, including some in the middle of the TMs that some TM code has to skip over. You can even separate TMs from items like Polished Crystal, giving people 57 more item slots. Or add an Apricorn Box, replacing seven items with one.
• Maybe wrap some things in "if def(USE_THING) ... else ... endif". Then you could have a features.asm file where you choose whether to define USE_BADGE_BOOSTS, USE_AI_RANDOM_FAILURE, etc.
• Fix battle ellipses, and remove unused characters from all the font graphics and macros/charmap.asm just to make it clear what's free to edit.
• Name it Clear Crystal. ;)