The reason is security.
SIM card is not just an ordinary piece of read-only memory. It's a separate micro-computer with its own environment capable of running Java Card applets. They can communicate with network provider and he can modify them over the air to some extent. For example when you want to change network provider, but keep your old phone number, you are provided with a "blank" SIM card from the new provider which is later programmed with your phone number and the old SIM card is cancelled.
SIM cards can have multiple applets installed. For example you can have your SIM card integrated with PayPass. With such SIM card, you can use your NFC-enabled smartphone as a wireless debit card.
Modern SIM cards cannot be cloned (except for some that use outdated encryption standards). But copying software is easy. Actually, your concept of software-based SIM cards implies the ability to copy them - if you could move the SIM from one phone to another, then you could copy it too. Preventing it on software level is not an option, because phone software can be modified by regular user (for example Android is open-source software and you can modify it yourself, then flash it to your phone). So with software SIMs, you can have two phones with identical SIM and that's no good. What's worse, you could clone that PayPass applet. Anybody could clone it. It's like a magnetic-strip credit card that can be cloned and used to steal your money.