No, there is no single place where all shortcuts are stored. Applications can choose to store their configurations wherever they choose.
That said, you're mostly looking at two levels: the application level (like Ctrl-C for copy in Firefox), and the window manager level (like Win+D to show the desktop). Compiz uses gconf to store its configuration.
For applications, you can roughly divide them by their toolkits. Namely, GTK apps use gconf too.
Surely, Ubuntu must store this somewhere for the key combination pressed on the keyboard to be directed to what it's connected with?
Not quite. The focussed application gets first kick at an X keyboard event, but if it doesn't, it bubbles up to other applications, namely the window manager. Thus, you can have a game that captures Alt+F4 and doesn't close the window (damn you, Jamestown!). I think you're thinking it goes to some central event router, then matched against some database, and routed to its destination. It's more like passing a bottle of drink around: pass, take a swig if you want and pass the rest, or take the whole thing and be greedy.
The Linux/FOSS environment (you may have noticed) is pretty democratic, and getting all applications to agree on a single central keyboard configuration repository is a fool's errand. For one thing, you've got unmaintained applications that were written a long time ago and wouldn't know about it.
Update: According to the Xlib docs on the subject:
Starting with the source window, the X server searches up the window hierarchy until it locates the first window specified by a client as having an interest in these events. If one of the intervening windows has its do-not-propagate-mask set to prohibit generation of the event type, the events of those types will be suppressed.
To receive KeyPress , KeyRelease , ButtonPress , and ButtonRelease events, set KeyPressMask, KeyReleaseMask, ButtonPressMask, and ButtonReleaseMask bits in the event-mask attribute of the window.
And you can set an attribute to disable propagation.
The problem is, you don't tell X which keys to listen for, so you can never tell a priori what keys the application listens for (let alone what they do) or really whether they intend to propagate it up if they are in fact listening for it. Thus, a central registry is impossible at the X level, so you'd have to do it at the toolkit level, which is merely practically impossible. :D