Why bother having limitations on Bitcoin Coinbase Transaction Scriptsigs?
The correct answer is: ask Satoshi.

My guessed answers to the questions you asked:


Why only one input? You can't predict when a particular coinbase transaction will make it into a successful block and you can't spend the output of a coinbase transaction for 100 blocks.  That means using a regular transaction is much superior for any normal spending.  If there's no normal case for adding inputs to a coinbase, maybe Satoshi thought it best to disallow inputs to prevent un-thought-of attacks.
Why reference a null outpoint? Using the same basic format as a regular transaction probably allowed code reuse.  If he had optimized the coinbase, we would've saved 36 bytes times 338,692 blocks (so far), or about 12 MB.  Not a big deal.
Why limit coinbase size to 100 bytes? We know Satoshi used the coinbase to put a message in block 0.  Maybe a 100-byte limit was his attempt to prevent anyone else from using that same mechanism to add overlong messages.  This was probably quite smart: from the fairly early days through today, many miners add messages to all of their coinbases---we can only imagine how annoying and wasteful those messages would be if they weren't limited to 100 bytes.
Why specify minimum coinbase size as 2 bytes? Highly speculative here, but maybe Satoshi foresaw the easy-duplication-of-coinbases described in BIP30 and wanted to require people use something like the original extranonce to help prevent accidental TXID collisions.