This answer is qualified on the thought that we're talking about Socket 939 processors here.
The main difference is L2 cache.
512KB per core for the X2 4600+, 1MB per core for all dual-core Opterons.
You can split the hair even finer, if you wish. All dual-core Opterons are based on the same core design, the "Denmark" core (although some would say that Denmark is synonymous with the "Toledo" core), while the X2s are either "Manchesters" (2 x 512KB L2 cache cores) or Toledos (2 x 1MB L2 cache cores) with only half the L2 cache available (2 x 512KB per core only). Originally, the only Toledo X2s were the X2 4400+ (2.2GHz) and the X2 4800+ (2.4GHz); Manchesters were available as X2 3800+ (2.0GHz), X2 4200+ (2.2GHz), and X2 4600+ (2.4GHz). However, at some point in time, AMD started shipping Toledos with some of their teeth pulled, leading to non-Manchester X2 4200+s and X2 4600+s. (I'm not sure if X2 3800+s shipped as crippled Toledos.)
Some people suggest that Opterons are more robust, more resilient, made from better silicon. This idea stems from the thought that Opterons are "server-class" components, but to be honest I'm not sure how you can validate that. As far as I know, AMD themselves have never publicly declared that to be the case.
All this information is accurate insofar as Socket 939 is concerned. I don't have experience with Socket AM2, so I don't know if the essential ideas in Socket 939 hold true for AM2 as well.
Hope that helps!