Simple maze game with four rooms
I think overall is good, some bits can be improved but it depends on taste. Take the following comments as suggestions.

As rooms is an array, can be defined in a shorter way as:

local rooms = {
   { south=3, east=2 },
   { south=4, west=1 },
   { north=1, east=4 },
}


Variable currentRoom can be localized:

local currentRoom = 1


In Lua can compare a var to nil or ask not var:

if not room then
   ...
end


Branches are exclusive, use of elseif can be skipped:

if not room then
   room = currentRoom
   print("Invalid move")
end
if room == 4 then
   print("Congratulations, you won!")
end


EDIT:

I would rearrange the code at the bottom as:

-- Update room state.
room = rooms[currentRoom][move]
if room then
  currentRoom = room
else
  print("Invalid move")
end

-- Reached final state?
if currentRoom == 4 then
  print("Congratulations, you won!")
end


that avoids the currentRoom = room or currentRoom statement (currentRoom only gets updated is room is not nil).