Great questions - these confused me too when I first set up multi-account.
SOUL.md is per agent and per Telegram account - each account gets its own identity and persona. That part works out of the box.
Where memory actually lives: MEMORY.md is the default and it lives in your workspace root. You probably aren't seeing it yet because OpenClaw creates it lazily - it only appears once the agent writes something to memory for the first time. The JSONL files are separate; they're session transcripts, not the memory store.
The real catch: MEMORY.md is a flat text file injected into context on every message. Once it hits ~20k characters, older notes quietly fall off. The agent seems to remember everything - it doesn't. There's no per-account separation either; all your Telegram accounts share the same file.
Clearing per-account: With default MEMORY.md, there's no built-in isolation. You'd need to manually segment it or swap to something with proper namespacing.
I switched to mr-memory for this exact reason - semantic vector store, stores incrementally, retrieves on demand per session, and handles multi-account cleanly without the truncation problem:
openclaw plugins install mr-memory
50M token free tier. Answers your "where does memory go?" question properly - it's indexed and retrievable, not a file that silently bloats.