I have been developing a facebook app for the past several months, and recently switched our canvas page from FBML to an IFrame. The main reason for doing so has to do with these posts and features:
Lead Facebook Engineer Recommends Developers Use IFrames for Speed, Convenience
XFBML - Facebook Developer Wiki
Basically, you can now embed FBML into an IFrame canvas using the XFBML features that were implemented to support Facebook Connect. IFrames may have performance improvements (although those are probably trashed by the client-side requests required by XFBML, which are a little tedious to set up at first), but the main advantages for me are:
1) The ability to use jQuery or any other stuff I want.
2) Useful, relevant ads from adsense, since I no longer have to embed the adsense javascript in its own IFrame.
Once I made this switch, I realized that I was able to get all the facebook data I needed through the API, and take advantage of memcached to improve performance. So, now my canvas is just plain old HTML, without any XFBML.
Hope this helps.