I thought exactly the same! The plaintext structure of Obsidian gives it some more freedom, instead Roam is “blocked” in blocks. It could happen that you have a quite long block of text, but you want to reference only a small part of it. With the “snippet” way you said, you could do it. I also made two pics explaining how it could be.
Basically you start writing inside the two brackets and a windowed search tool appear (I screened the left bar search tool), showing you all the pages containing what you wrote and a little preview of it
When you find your “block”, you start highlight it and the window lets you easily (but how easily is questionable, for sure not so easily for long sentences) highlight all the text of that page
When you have finished highlighting, you could press Enter and the “snip reference” is created. How? This is a programmer question, and I am not. I think that it is possible to use the ID way that Roam uses. The program could put some unique symbols around the referenced text. For example: ^^^IDSTRING|text^^^. The program would know that everything inside | and ^^^ would be the text, and everything inside ^^^ and | would be the ID of the reference. And if you move to another note taking tool in the future, you can clean your markdown files from these tags simply by deleting everything that is inside ^^^ and | (it should be like a Regex command, right? I’m not a developer).
One problem is that this would be not easy to implement in a WYSIWYG editor