Поскольку mapOverlay - это перечисляемый элемент mapOverlay, а не только один mapOverlay.
Я думаю, что вы пытаетесь сделать:
Dim mapOverlay = mapOverlays.Where(Function(x) x.Id = overlay.Name).Single()
mapOverlay.IsVisibile = False
Если вы наведете указатель мыши на mapOverlay, вы увидите, что возвращаемый тип по сути является GMapOverlay, а не IEnumerable (из GMapOverlay), поскольку Single возвращает только один элемент. С другой стороны, Distinct может возвращать более одного элемента, он просто отфильтровывает повторяющиеся значения.