I tried the free episode 4 both through Steam and downloaded separately, on my MacBook Pro (in OS X).
There is some sort of problem with the sound. The game works great through Steam if I turn the sound off, but sometimes randomly enters a infinite loop if the sound is on. The infinite loop also happens 90% of the time when you click the load button or start a new game, if the sound is on.
The separate version first shows a semibroken html page with no close button. But if you manage to kill the right wineloader process (typically the second to highest pid), it shows the html source in a box and then starts the game. It crashes when you click the load button however, or if you set the effects volume to zero, regardless of the other volume settings.
edit: You can get both versions more stable by unchecing CoreAudio in winecfg, launching the game, changing the effect volume to zero, reenabling CoreAudio and relaunching. Unfortunately, this seems to turn off all sound in the game, including voice and music, but at least it doesn't crash.
The trace below is for the Steam version while it's in the infinite loop from clicking the load button.
1387 Thread_2903
1387 thread_start
1387 _pthread_start
1387 CAPThread::Entry(CAPThread*)
1387 HP_IOThread::ThreadEntry(HP_IOThread*)
1387 HP_IOThread::WorkLoop()
1387 HP_IOThread::PerformIO(AudioTimeStamp const&)
1387 IOA_Device::CallIOProcs(AudioTimeStamp const&, AudioTimeStamp const&, AudioTimeStamp const&)
1387 HP_IOProc::Call(AudioTimeStamp const&, AudioTimeStamp const&, AudioBufferList const*, AudioTimeStamp const&, AudioBufferList*)
1387 AUGenericOutputEntry
1387 0x70006222
1387 0x7000d218
1387 AudioConverterFillComplexBuffer
1387 BufferedAudioConverter::FillBuffer(unsigned long&, AudioBufferList&, AudioStreamPacketDescription*)
1387 AudioConverterChain::RenderOutput(CABufferList*, unsigned long, unsigned long&, AudioStreamPacketDescription*)
1387 BufferedAudioConverter::FillBuffer(unsigned long&, AudioBufferList&, AudioStreamPacketDescription*)
1387 Resampler2Wrapper::RenderOutput(CABufferList*, unsigned long, unsigned long&)
1387 BufferedAudioConverter::GetInputBytes(unsigned long, unsigned long&, CABufferList const*&)
1387 BufferedAudioConverter::FillBuffer(unsigned long&, AudioBufferList&, AudioStreamPacketDescription*)
1387 CBRConverter::RenderOutput(CABufferList*, unsigned long, unsigned long&, AudioStreamPacketDescription*)
1387 BufferedAudioConverter::GetInputBytes(unsigned long, unsigned long&, CABufferList const*&)
1387 AudioConverterChain::FillBufferFromInputProc(unsigned long*, CABufferList*)
1387 AudioConverterChain::CallInputProc(unsigned long)
1387 0x7000d70b
1387 0x7000e3b4
1387 0x7000ebb0
1387 CoreAudio_woAudioUnitIOProc
1387 0xffffffff
1387 _sigtramp
1387 call_exception_handler
1387 0xffffffff
1387 _sigtramp
1387 call_exception_handler
1387 call_exception_handler
1387 call_exception_handler