React.memo works with functional components while PureComponent is for class components. Both implement shallow comparison of props by default to determine if a re-render is necessary. The key difference is in their targets: React.memo is a higher-order component that wraps functional components, while PureComponent is a base class that class components can extend. Additionally, PureComponent also performs shallow comparison on state changes, while functional components with React.memo manage state separately through hooks.