Перемычки для этого не нужны, ни для приведенных вами задач, ни для задач Ксении. Не, если половина ног не использованы, то почему бы и нет, но зачем, если можно прошить в камень не один бинарь, а два? И сразу не нужны ни таблицы, ни джамперы, да и монтажник вам спасибо скажет. Python и openocd вам в помощь.
Джамперы/свичи/ перемычки нужны, чтобы аппаратно что-то переключить, например напряжение питание буферов (в j-link, кстати, это реализовано программно). Их часто ставят для возможности разрыва цепи без перерезания дорожек, например для отладки плат с внешним WDT, наши железячники постоянно ставят их на ноги EN/DIS/DIR микросхем, на jtag, много где.
Также их ставят для тех приложений, которыми нельзя управлять программно. Например, загрузчик первого уровня из ROM процессора определяет, откуда считать загрузчик второго уровня, по логическим состояниям на ногах boot процессора. Но на то он и ROM.
Про условную компиляцию я вообще не писал, она здесь не нужна. Я её применяю только для отделения debug от release + определение камня, под который собирается проект.
Подход, который вы описали, очень старый, появившийся вместе с первыми программируемыми микросхемами. Для современных камней с адекватной реализацией флеша он как минимум необязателен.