Максимальная длина в 100 м определяется скоростью распространения сигнала в среде (мы говорим только про Ethernet). Соответственно минимальный размер пакета таков, чтоб он целиком помещался в кабеле. В таком случае, если на второй стороне порт тоже начнет передачу - первый его успеет "услышать", пока не закончит передачу своего пакета и "поймет", что пакет не будет доставлен. Т.е. на аппаратном уровне будет определена коллизия. Дальше она уже будет разрулена самими адаптерами, с помощью случайных задержек и повторной передачи.
Минимальный размер пакета у гигабита существенно выше - как раз по этой причине, но там стандарт сложнее и на уровне пакета допускается сбор нескольких порций данных в одну передачу.
Соответственно если платы хорошие и кабель хороший - то и "пробиваться" расстояние может более 100 - и работать будет. НО. Чем выше нагрузка - тем больше коллизий, а при превышении 100 м они перестают определятся аппаратно.
Т.е. сделав кабель более 100 метров и попинговав - вы увидите хорошую связь. А вот дав полную нагрузку - получите букет проблем.
Если расстояние больше - то или используйте другую технологию (например оптику, в которой для приема и передачи разные волокна), или ставьте повторитель сигнала (свич) посередине.
По факту - самый простой способ - грамотное расположение коммутационного шкафа в здании. При расположении в центре и плечах по 100 метров - мало какой закоулок останется вне зоны досягаемости.
Подключение же разных зданий нужно продумывать в любом случае, т.к. есть и другие проблемы, кроме 100 метров - например разные фазы питания оборудования, шаговое напряжение, грозозащита и т.п.
З.Ы. Гигабит, в вашем случае, просто снизил нагрузку на линию и соответственно число ошибок за счет скорости.
З.З.Ы. Когда-то давно (поскольку проблема не нова), особо инженерно-электрониковые товарищи решали ее заменой кварцевого генератора частоты на парных сетевых платах. Меньше частота - длиннее пакет - больше сегмент.