I recall someone like Kingcom saying that the GBA SRW games use some kind of dictionary compression. This makes building a table more complicated when the script is partly compressed.
SRW A doesn't, but I cannot speak for others.
And if you've got Shift-JIS stored in plain sight, sure, I can imagine how a program can automatically find all occurences of Shift-JIS and the boundaries of each chunk that has them. As a Mac user, SJIS Dump isn't an option, so I just use a hex editor and a Shift-JIS chart, and have found a couple scripts that way.
But in ROMs for older (8-bit) systems it seems like text can be just about anywhere in the ROM, especially if there isn't much text at all (as with arcade-style games) and it's stored as single-byte references to tile blocks that may only be used in one or two screens each. In the games I've worked on it's been a painstaking process of tracking down one or two strings at a time -- nothing I could automate, even if I knew how. I have no trouble finding text I already know exists, but I have no idea how I'd go about finding text I don't know about.
Is there some clever way to deal with this, or is "dumping" for many 8-bit games really...less systematic and automatic than that term makes it sound?
Others will have better ways, but...
Once you have a table (which is manual work indeed) then you could do the same as sjis dump with that table. (sjis dump offers code with its exe, by the way, so recompiling on Mac or changing it to use tables with Klarth's tablelib should be easy.)
Of course you can improve by (manually) looking for a pointer and dump a pointers table. I should solve part of the need.
Or you can also enter a pointer format, and have a program check if the "candidate" pointer it finds points to something that has at leas X characters from the table you made.
Too many possibilities, not enough time.
Of course none of that is perfect. But it helps.