Я бы написал так, как вы упомянули - я использовал этот метод в подобных ситуациях и никогда не сталкивался с проблемой производительности, и подозреваю, что вы будете такими же.
Кроме того, никогда не слышал, чтобы это упоминалось как неэффективное, но его немного осуждают, потому что оно связывает путь с контекстом. Альтернативой, которая могла бы преодолеть это, было бы передать переменную в маршрут так же, как и любой другой параметр (или пользовательский объект, если вам нужно все это). Если вам нужно сделать это много, вы всегда можете создать собственный помощник по URL, который обернет существующий метод url_for, добавив этот параметр ко всем другим передаваемым деталям.