It would take a very bad system to cause playback problems. Network access and disk access are many times faster than needed.
It's not an issue if the disk is already spinning, you're playing over a fast local network connection, and the disk/connection is not being used by anything else.
If the disk has gone to sleep, there is heavy disk/network access from other processes, or it's being sourced from a remote connection, it's not difficult to make playback in Media Center stall when changing tracks - or even when seeking if you're playing back SACDs that are too large to be fully decoded into memory.
However, memory playback for music is what it is now - completely eliminate any possibility of hardware interrupt or other unexpected event during playback.
The current implementation of Memory Playback does not do this.
1. Memory Playback disabled. Keeps disk/network access busy and prevents it from idling. This keeps playback gapless so long as it is fast enough (or free enough), since it doesn't allow the drive to sleep - though it also means that playback can be interrupted if another process saturates the connection.
2. Load full file (not decoded) into memory. Ensures that the current track cannot be interrupted by slow I/O access. Allows disks/NAS/network connections to sleep/idle and may introduce delays when changing tracks.
3. Load full album (not decoded) into memory. With large tracks this causes significant delays to the start of playback. With too many tracks, it falls back to memory playback being disabled (after that delay). May use a significant amount of memory. But does at least guarantee that playback will not be interrupted and track changes should be instantaneous, if the playlist is small enough to fit in memory.
4. Load decoded file into memory. Behaves the same as #2, except it uses significantly more memory. The one advantage that it has, is that it
will cache SACD tracks, while loading non-decoded files does not.
What is needed for seamless playback is to load the current track in memory (not decoded), start playback as soon as that happens, and then load at least one more upcoming track in memory.
That way you ensure that playback remains gapless and cannot be interrupted by slow access, without wasting a lot of memory.
Ideally it would cache multiple tracks to ensure that the buffer is of sufficient length for playback over a very slow disk/network connection to remain gapless, since some tracks may be very short.
A buffer of 5-10 minutes should be more than enough, while still using very little memory.
It could even be repurposed as a power-saving feature by having a cache of say 10 tracks and only refilling it when that drops to 1 or 2 upcoming tracks.
The only thing this system would still fail on is SACD ISO playback.
I don't know that there's a good solution for that other than either caching the entire ISO file, or decoding tracks into memory. It's actually likely to use less memory to cache the entire ISO file than the decoded tracks for many albums.