久保秋と申します。

1)表題の動作は、みなさんも再現する現象でしょうか。

サーバー:
require "socket"
server = TCPServer.open( 3000 )  # <1>
sock = server.accept
p "connected"
server.close
(以下略)

クライアント:
require "socket"
host = 'localhost'
sock = TCPSocket.open( host, 3000 )
(以下略)

サーバーのコードを、Windows10上のRuby 2.3.1で動かすと、
localhost上のクライアントからは接続できますが、
他のホスト(Mac、Windows)上で動作するクライアントからは接続できません。
ActiveScriptRubyの1.8.7でこのコードを動かすと、ほかのホストからも接続できます。
この現象は、みなさんにも再現性のある問題でしょうか。
Windows上の2.3.1で発生する原因は何でしょうか。

2)openメソッドの省略時引数を変更しませんか

サーバーの<1>の行のopenメソッドを、open( "", 3000 )
のように INADDR_ANYの指定形式にして書くと、ほかのホストからも接続できます。
TCPServerのドキュメントには、次のように書いてあります。
open(host=nil, service) -> TCPServer
「host を指定した時は 指定したホストに対しての接続だけを受け付けます。
省略時は全てのホスト(インタフェース)への接続要求を受け付けることになります。
  host に指定できる形式はsocket/ホスト指定形式を見てください。」
私には、ホスト指定を省略した時は、ホスト指定はnilとみなし、
動作はホスト指定形式「""」と同等に扱う、と読めます。

ホスト指定の省略時引数を、ホスト指定形式に含まれていない「nil」ではなく、
ドキュメントの説明に合う「"" または "<any>"」にしてはいかがでしょうか。

-- kuboaki