I’m not super-informed on this, but I would go for tables. They can be more flexible – you can include additional columns to keep track of things like whether the row can be used again or should be blanked out after use, and whether the row has been used, and things like that. Also, as I learned the hard way, lists are memory hogs; they can be expanded dynamically, so Inform leaves a lot of space for them to expand.
EDIT: And, depending on how you manage the tables, you might find that this lets you streamline the to-say phrase further. Declare “Every place has a table called exploration-table. The exploration-table is usually the Table of Nothing Interesting Happening.” and then you could just have the “explore L” phrase call a random row from the exploration-table of L and do – well, whatever it is you’re planning to do with the table. You’d need to find some way of having a table row do things like adding “mountains” to the available locations; maybe this could be done by having a column of stored actions that might be called, and then defining an action on a place that adds the place to the Table of Locations?