How can I determine what is causing my Nexus 4 to freeze?
There are some ways to pin down your problem. The easiest way should be reading out the last_kmsg which is normally stored under /proc/last_kmsg. The kernel logs everything in there and it can be read until the next reboot.

So reading last_kmsg always shows things that happened before the device rebooted the last time.

Another way would be using "adb logcat" or - more comfortable - the app Catlog which can record your logcat into a .txt file on the SD-Card. Be advised that logcat is not the same as a kernel message but it also includes messages from user space apps and UI stuff.

If I'm allowed to make a wild guess, I'd say that it's the ROM's fault (e.g. undervolting or something else going wrong).

Best regards!