They are not really related: restrict teaches the compiler that pointers do not alias, which (often in combination with const) might have it understand certain reads are from read-only memory and could be optimized as such. ldg bypasses any analysis and forces the hardware to read through the texture cache, which should only be used in the case of read-only memory. Using the latter with read-write memory will result in corruption, while you can safely tag such pointers restrict.
Do you have a source for that? IIUC these reads are never cached in L1, but in L2 or in the read-only data cache depending on the use of ldg. I’m also not sure what memory coalescing has to do with that.