Pues acá hay 2 soluciones; 1 con javascript (más eficiente) y otra del lado del server ...
Posteo la del lado del server ...
Código PHP:
#duplica esta entrada para cada $_GET
$_GET[ 'carpeta' ] = $_GET[ 'carpeta' ] == '' ? '-------' : $_GET[ 'carpeta' ];
$query_busqueda_resultado = 'SELECT *
FROM documentos
WHERE carpeta_ID LIKE "%' . $_GET[ 'carpeta' ] . '%"
AND funcionario_ID LIKE "%' . $_GET[ 'funcionarios' ] . '%"
AND fecha_entrada LIKE "%' . $_GET[ 'fecha_entrada' ] . '%"
AND fecha_documento LIKE "%' . $_GET[ 'fecha_doc' ] .'%"';
Lo que te está ocurriendo tiene sentido, ya que le estas diciendo a MySQL que te traiga las coincidencias de todos los campos ... osea te está generando cosas como
WHERE carpeta_ID LIKE "%%" ... entonces obviamente pues todo coincide con eso ...

...
Con javascript lo que tendrías que hacer es antes del envío del formulario validar cuáles de tus campos de búsqueda van vacíos y para el que valla vacío cambiarle el valor a "-------" ...
NOTA: Estoy usando
------- asumiendo que en los registros no existe tal valor, obviamente hay formas mejores, del lado del server, x ejemplo reconstruyendo el query si vienen vacíos y metiendo un where que invalide los like . Solo muestro lo que tienes que hacer y una solución simple, la solución final es decisión tuya.
Mucha suerte y un saludo