What are the reasons that an imessage would send as a text message instead?
iMessage will use sms/text messaging if the data link to the Apple servers are non-functional. You can configure the phone to send as text by default. 

Note that all text messages on the phone are stored in a sqlite3 database file, so if you are concerned and want to access that information, performing an unencrypted backup of the phone will give you a copy of the sqlite3 database file. Though you would need to isolate it from the thousands of other files, all identified with a hash filename. Not that hard, actually.

The other option would be to jailbreak the phone and cd into the app folder for iMessage and access the messages database. 

In either case, in answer to your original question, if access to the iMessage servers at Apple are inaccessible, then the phone will default to sms/text messaging. 

Note, if someone wants to communicate secretly, there are plenty of apps for that. Plenty of Visual/Audio chat programs out there that completely bypasses the phone log systems.

If they are using FaceTime, then there is no need to use sms/text. Ie, the communication is all happening through the Apple servers.

If they delete it from their logs, then, depending on whether the log entry was purged or just flagged as not displayed, the entry may be recoverable. However, chances are, it's not recoverable. 

IF your intention is to find out/keep track of someone's communication, then the only real practical way is to gain additional access to their phone. Ie, jailbreak and then installation of additional code.

One way to say retain the call logs, be they via sms/text or imessage, or factime, would be to:


Have a script or program continually locate the sqlite3 database for the iMessage app as well as the sqlite3 database for the Addressbook. The location changes in the event of iMessage being updated. Or an OS update.
Periodically backup the sqlite3 database and the addressbook database.
Have those copied to your private server somewhere.
Perform SQL queries against the databases to correlate which imessage goes with which addressbook entry, then generate a report based on the timestamps and correlated information.


If you want to do this without Jailbreaking the phone, you can write and publish an iOS app, which requests and accesses the Addressbook and the iMessage interfaces to achieve the same thing.