Is there a timeout/max capacity in blender's phyton scripts?
Your srcipt is fine, and blender is not timing out, but rather you have found a limitation of blender. Blender is not good at displaying many objects, 250,000 different cubes will crash blender.
Try adding 3 array modifiers to a cube, to generate 250,00 cubes, then go into edit mode and separate by Loose Parts (blender will crash.)

Instead of adding a cube at each coordinate, create a mesh with all the coordinates as  vertices. So each coordinate is represented as a vertex.

import bpy
fh = open('coordinates.txt')

# A list of the locations of the cubes
vertices = []

for line in fh:
    coo = line.split()
    x = float(coo[0])
    y = float(coo[1])
    z = float(coo[2])

    # Instead of adding a cube, append the location of the cube to vertices
    vertices.append((x, y, z))

# Make a new mesh and set its vertices
mesh = bpy.data.meshes.new('verts')
mesh.from_pydata(vertices, [], [])

# Make an object for the mesh
object = bpy.data.objects.new('verts', mesh)
bpy.context.scene.objects.link(object)


Then parent a default cube to the newly generated mesh, and use dupliverts to add a cube at each vertex.
  

From the excerpt of your coordinates, in top view, it produces this: