Well for a start you could squeeze a few chars out of that by using tail instead of sed (and taking ticks off around the dot in the delimiter option of sort; [EDIT] probably that "-1" for ls is not needed either):
ls tmp.* |sort -t. -rn -k2 |tail -n+2 |xargs rm -f
That saves you a total of 6 chars (plus 3 more, if you remove the spaces to the left of each pipe sign) of typing, if I got it right. Not much, but you asked for a simpler solution, and that's such: less typing and no dollar sign
Hopefully something better follows; I'm too tired to think of anything wise now. [EDIT] Except that you could use a time-based sorting rather than suffix-based, if you knew which file to preserve; you could touch it (thus making it the "newest" file in terms of ctime) and then remove all the "older" files:
ls -c tmp.* |tail -n+2 |xargs rm -f
That should remove all but the newest (as in ctime, time of last modification of file status information) file, the one you just touched -- tmp.226. The downside of this is obviously that you need to know the filename of the "last" file which you want to preserve; though if you're fine with checking it out with ls, for example, go ahead. A suffix-based method is better if you don't want to fiddle with timestamps or if you want it "fully automated", though, and in any case you should first check (run without "rm") what gets removed and what not before taking real action.