sys.sysprocesses versus DMVs
sys.sysprocesses still contains information that is either very cumbersome or impossible to get from the DMVs, since they weren't complete (they are a bit better with each new release, but not 100% yet). Two standout examples:


database_id for a non-active request (e.g. there is a row in sys.dm_exec_sessions but not in sys.dm_exec_requests)
open transaction count


I suspect this backward compatibility view will remain around until a few versions after they supply the information directly through the DMVs.