What is purpose of use empty interface?

i run into bellow code when browsing some erc721 contract:

interface OwnableDelegateProxy {}
contract ProxyRegistry {
    mapping(address => OwnableDelegateProxy) public proxies;

and it's caller context:

    function isProxy(address _address, address _operator)
        returns (bool)
        if (address(proxyRegistry).isContract()) {
            try proxyRegistry.proxies(_address) returns (
                OwnableDelegateProxy _proxy
            ) {
                return address(_proxy) == _operator;
            } catch {}
        return false;

i can't quite understand the above code.

What if we replace OwnableDelegateProxy type with address type?