Similar, perhaps, with several key differences:
1) Managed code vs. unmanaged code -- means that CLR routines are safer than XPs.
2) XPs are created per server. CLR routines are created per database.
3) XPs are only "procedures". CLR routines can take the form of procedures, functions, types, aggregates, or triggers.
4) In-process ADO.NET context connection for CLR routines vs. "bound" connections for XPs -- means less overhead for CLR routines (no need to create a new connection).