Cleaning up a class that contains the object it represents
Yes, your board.board has a code smell, but it is hard to say what to do without knowing Game.

Actually Board#board is an array. I would recommend to add methods to Board that allow you to use the instance of Board instead of Board#board.

Example: To get a row of yor board you can use: 

class Board
  ...
  def [](row) #Access to one row
    @board[row]
  end
  def each_row #loop on all rows...
    @board.each{|row| yield row }
  end

end

class Game
  ...
  def is_over?
    @board.each_row{|row|
     row.each{|field| } ##your check
    }
    ...
  end
end