I prefer the second system, so that the wallet can't be tricked into signing a transaction that it doesn't understand. But it means that the wallet must accept block data that it cannot confirm. This doesn't seem to be too big of a problem, since the transactions would be sent either by the point of sale terminal that wants to get paid, or from the user's semi-trusted home computer. The worst that an attacker could do would be to trick the wallet into creating an invalid transaction.
As to the format of communication between the two devices, I prefer JSON because it is so simple. ASCII armor is more suitable if you are passing files around and need them to be portable across a bunch of different systems. But if you have a live communication link, it doesn't seem ideal.
kjj,
There's a couple reason why the solution currently implemented in Armory is the way it is:
(1) The offline computer does know what it's signing. If you look at BIP 0010, you'll see that it includes all the supporting transactions of all the inputs it is signing for. All inputs reference the TxOuts being spent by (TxHash, TxOutIndex). By including those transactions themselves in the BIP 0010 packet, the offline system can hash the transaction, compare it to the hash of the input being signed, and then look at that transaction and see the value of the input. Additionally, it will need the TxOut-script being spent, so the previous transaction provides that as well. There's no way to manipulate or trick the offline system into signing different inputs or misrepresent input values. Similarly, the outputs are part of the signature. The target address/hash and the output value is all part of what's being signed.
So, if someone manipulates the packet at any point, they either break the signature, produce an invalid tx, or the offline system confirmation dialog will show different info than the user is expecting. This is secure, despite the offline computer not having any blockdata at all (or rather, the offline system is given just as much blockdata as it needs to know what it's signing).
(2) The ASCII armored BIP 0010 was not designed for offline transactions. It was designed for multisignature transactions, so that this "packet" could be passed around to relevant parties, and they can add their signatures to it, pass it on, combine with other packets, etc. The ASCII-armoredness simply improves its "fluidity" so that it can easily be copied inline into emails, if necessary.
It just so happens that it's useful for offline transactions, too: offline transactions are simply 1-of-1 multisignature transactions, for which the online computer needs to collect signatures. By creating BIP 0010, it allows for any combination of programs (that use BIP 0010) to be able to interoperate -- either offline transactions, or multisigs.