Postgres 10 and malformatted array literal when using EXECUTE
I think your function does not work because it does USING $1 instead of the parameter name (USING _ids). Also, the concatenation is better replaced with the format function. And you can use one query instead of array_length trick.

This should work:

CREATE OR REPLACE FUNCTION "public"."has_any_ids"(
  _ids TEXT[],
  _column_name name,
  _table_name name,
  _schema_name name DEFAULT 'public'
)
RETURNS BOOLEAN
STABLE
LANGUAGE plpgsql AS $$
/* Checks whether any given id exists in the target table. */
DECLARE
    _query TEXT;
    _result BOOLEAN;
BEGIN
    _query := format(
        'SELECT EXISTS(
            SELECT 1 FROM %I.%I t WHERE t.%I = ANY(%L::text[]))',
        _schema_name, _table_name, _column_name, _ids);
    EXECUTE _query INTO _result;
    RETURN _result;
END;
$$;

CREATE OR REPLACE FUNCTION "public"."has_all_ids"(
  _ids TEXT[],
  _column_name name,
  _table_name name,
  _schema_name name DEFAULT 'public'
)
RETURNS BOOLEAN
STABLE
LANGUAGE plpgsql AS
$$
/* Checks whether all given ids exist in the target table. */
DECLARE
    _query TEXT;
    _result BOOLEAN;
BEGIN
    _query := format(
        'SELECT NOT EXISTS(
            (SELECT u FROM unnest(%L::text[]) u)
            EXCEPT
            (SELECT t.%I::text FROM %I.%I t WHERE t.%I = ANY(%L::text[]))
        )',
        _ids, _column_name, _schema_name, _table_name, _column_name, _ids
    );
    EXECUTE _query INTO _result;
    RETURN _result;
END;
$$;