I haven’t done serious optimization work in a while, but I’d imagine the main thing is moving your tables into static memory. Inform 6 puts all tables and arrays into dynamic memory, and has no way to change that.
So if you want to move your constant data tables into ROM, the main way to do that in I6 is to turn each array into a routine with a big switch statement, that takes an index parameter and returns the relevent entry. Routines are always stored in “high memory” (the part of ROM that (usually) can’t be addressed directly), so this can help with both dynamic memory limitations and address-space limitations.
(Alternately, modifying I6 to let you store arrays in static memory. Which is a pretty significant change for a fairly niche benefit, since the main limitation nowadays is usually addressable space, not dynamic memory. But if there’s a lot of demand for I6 games on the C64, and someone who knows the I6 compiler better than me were willing to put in the time, it could be worth it.)