Пример:
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '^\xff\xfe' || echo "false"
результат false
А если искать не первые BOM байты, то все нормально матчится, пример (поменял только паттерн в grep):
printf '\xff\xfe\x48\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00' | grep -PUa '\x48\x00' || echo "false"
результат успешный