Yes, but "impromptu meetings" are toxic for getting things done when you're coding. An interrupt-driven culture makes it a nightmare to get into a flow state and stay there without constantly having to context-switch because some jerk has to have an answer RIGHT NOW and can't be bothered to send email.
Some teams benefit more from immediate responses than "flow state". If you're running a operation where there's lots of small features and design niggles, brainstorming them out with the rest of the team might be better than achieving perfect zanshin, but still having no idea, or doing 8 hours of back-and-forth intense coding then finding out that there's a standard library function or better algorithm that your co-worker could have told you hours ago.
Granted, this would mostly apply to teams who are either very newbie-heavy or work on very small feature increments at a time - or both. And maybe some designers, but I'm not qualified to talk about that. For most other purposes, more isolated environments with a good tech solution for communication would be preferable (IRC, Basecamp, Jabbber etc.)
Even then, you can keep communication via email or IM, just send a message to the person who may know, "hey, do we have any library for this, seems like we might", etc and they get back to you when they can, you don't have to have face to face to ask questions, as you said, mainly its important for newbies, but more experienced dev's should know when to ping someone even if the response won't be immediate.