What spec are you reading?
P. 79 for SFSB
When the client calls remove on the home or component interface to remove the session
object, the container issues ejbRemove() on the bean instance. This ends the life of the session
bean instance and the associated session object. Any subsequent attempt by its client to
invoke the session object causes the java.rmi.NoSuchObjectException to be thrown
if the client is a remote client, or the javax.ejb.NoSuchObjectLocalException if
the client is a local client.
P. 114 for Entity Beans
After an entity object has been removed, subsequent attempts to access the entity object by a remote client
result in the java.rmi.NoSuchObjectException.
P. 132 also for Entity Beans
The Container must detect any subsequent attempt to invoke an accessor method on the
removed entity object and throw the java.rmi.NoSuchObjectException if the client
is a remote client or the javax.ejb.NoSuchObjectLocalException if the client is a
In one or two other places, you're right though. It says "should" in place of "will" or "must". It's not the most clearly written specification. However, on this point, I can't see the container taking that shortcut. It almost certainly violates the spec, and really doesn't save any effort for the container implementer.