Question about approvals for 1155 tokens

I'm looking at an ERC1155Minimal contract. My question is about its approval and safeTransferFrom function (see below). Specifically, it looks like, when I call setApprovalForAll that I am granting the transferee the ability to transfer all my 1155 tokens - why am I not able to limit the approval to just tokens with tokenId x? You can revoke approval but I'm just wondering why it is set up like this. Why not at least allow the ability to limit the transfer to just tokens with a specific tokenId?

function setApprovalForAll(address operator, bool approved) public {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    /// @notice Transfer a single token from one user to another
    /// @dev supports token approvals
    /// @param from the user to transfer tokens from
    /// @param to the user to transfer tokens to
    /// @param id the ERC1155 token id to transfer
    /// @param amount the amount of tokens to transfer
    /// @param data optional data to include in the receive hook
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) public {
        if (!(msg.sender == from || isApprovedForAll[from][msg.sender])) revert NotAuthorized();

        balanceOf[from][id] -= amount;

        // balance will never overflow
        unchecked {
            balanceOf[to][id] += amount;
        }

        afterTokenTransfer(from, to, id, amount);

        emit TransferSingle(msg.sender, from, to, id, amount);

        if (to.code.length != 0) {
            if (
                ERC1155Holder(to).onERC1155Received(msg.sender, from, id, amount, data) !=
                ERC1155Holder.onERC1155Received.selector
            ) {
                revert UnsafeRecipient();
            }
        }
    }