Как расставить пробелы у каждого символа |?
На самом деле, ваше решение и есть верное.
Пробел в "ручной молоток" не исчезнет, потому что .trim() удаляет пробелы только с начала и конца строки.

Таким образом,

const string = 'дрель| домофон|пила| топор |ручной молоток';
const modifiedString = string.split('|').map((s) => s.trim()).join(' | ');

// "дрель | домофон | пила | топор | ручной молоток"

Как мне кажется, регулярные выражения в этой задаче будут лишними.
можно использовать replaceAll

let a = 'дрель| домофон|пила| топор |ручной молоток'

a = a.replaceAll(' ', '').replaceAll('|', ' | ')

console.log(a)