That's pretty much it - Apple only gave SDK developers a very small part of the iPhone's programming libraries to work with, and they forbid using anything that they haven't directly allowed you to access. In addition, they've been changing bits of it here and there as the betas went on. The jailbreak apps have had access to the entire iPhone library set, so most of them at least in part are doing things Apple doesn't want them to.
So depending on how a jailbreak app is written, it may be extremely easy, extremely hard, or plain impossible to port over. For example, game system emulators rely on being able to write directly to the screen, but the official SDK doesn't let you do so; you can work around it, but it's a lot more work, and would slow the emulator down so much that it may not be worth it (not to mention Apple forbids emulators from their official App store as well).