Доброго дня!
На мой взгляд, проблема в том, что, например, значения isFioValid из forms.js и valid из fioValidation.js во время выполнения никак не связаны друг с другом.
Ваша функция
export function fioValidation() {
...
let valid;
...
}
в своем теле не устанавливает значение valid, следовательно результатом ее выполнения будет undefined:
let isFioValid = fioValidation(); // isFioValid === undefined
После этого при наступлении DOM-события вы меняете эту самую переменную valid, которая живет в замыкании у прослушивателя fio.addEventListener. Но так как это примитивное значение, то изменение этого valid никак не затрагивает значение переменной isFioValid, которой уже присвоено значение undefined.
В вашем случае сходу можно попробовать возвращать из функции не примитивное значение, а объект:
let fioValid = {isValid: false, name: ''};
а потом при наступлении события blur устанавливать нужное значение если все хорошо (или сбрасывать если наоборот):
fioValid.isValid = true;
fioValid.name = fio.name;