There are some tricks that can be used to squeeze out whatever little space you can; most of the space taken up is from level data in my experience.
Deleting unseen parts of the backgrounds can free up a good bank's worth of data if you go through every level and do this, likewise deleting the bottom five rows. In levels where it's possible to change the BG over to a Layer2 level can save space as well. Changing over commonly used ExAnimations in levels to global can help as Exanimations take up quite a good bit of data too. Delete any unused objects, optimize map16 space and finally... removing unnecessary Map16 tiles in levels.
the hack still uses Romi's SpriteTool over PIXI; then Imamelia's shared subroutines
can really lower sprite space. Remove any sampled music tracks that are not in use and unifying sample selection in the music; likewise remove any tracks that are only used once or twice. (Though removal is always a hard thing to do because boy aren't we all fond of music... but still.)
With this and a few other tricks, port over to a new rom with the Scratch Rom
patch; maybe ask Imamelia how to remove the vanilla boss data (koopa kids, reznor, bowser, etc) that aren't in use in the game and you stand to gain around 0x5000-0x16000 bytes of data to use... which isn't a lot, but better than before.